如何设置 ListView 行高
Posted
技术标签:
【中文标题】如何设置 ListView 行高【英文标题】:How to set the ListView Rows Height 【发布时间】:2012-05-09 22:03:36 【问题描述】:我正在向您展示下面的图像,其中行的高度不同我希望行的高度应该相同。
在我的程序中,我从我解析的 XML 服务获取数据并在列表视图上显示结果,但 ListView 行的高度不同。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:background="@drawable/list_selector"
android:padding="3dip"
android:layout_
android:gravity="center"
android:layout_>
<TextView android:layout_ android:text="ITEM"
android:layout_ android:id="@+id/txtItem"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="15dip"
android:textStyle="bold"
android:textColor="#040404"></TextView>
<TextView android:layout_ android:text="MANUFACTURER"
android:layout_ android:id="@+id/txtItemTwo"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textSize="14dip"
android:textColor="#FF7F50"
></TextView>
</LinearLayout>
我已经设置了高度
android:layout_
但在 listView 上显示时仍然不一样。
这是我为 getView 定制的适配器:-
public class MyEventAdapter extends BaseAdapter
ArrayList < String > listTitle;
ArrayList < String > listFullText;
Activity activity;
public MyEventAdapter(Activity activity, ArrayList < String > listTitle, ArrayList < String > listFullText)
super();
this.listTitle = listTitle;
this.listFullText = listFullText;
this.activity = activity;
public int getCount()
// TODO Auto-generated method stub
return listTitle.size();
public Object getItem(int position)
// TODO Auto-generated method stub
return null;
public long getItemId(int position)
// TODO Auto-generated method stub
return 0;
private class ViewHolder
TextView txtViewTitle;
TextView txtViewTitleTwo;
public View getView(int position, View view, ViewGroup parent)
// TODO Auto-generated method stub
ViewHolder title;
LayoutInflater inflater = activity.getLayoutInflater();
if (view == null)
view = inflater.inflate(R.layout.lview_row, null);
title = new ViewHolder();
title.txtViewTitle = (TextView) view.findViewById(R.id.txtItem);
title.txtViewTitleTwo = (TextView) view.findViewById(R.id.txtItemTwo);
view.setTag(title);
else
title = (ViewHolder) view.getTag();
title.txtViewTitle.setText(listTitle.get(position));
title.txtViewTitleTwo.setText(listFullText.get(position));
return view;
任何人都请我以正确的方式获得所需的结果。
提前致谢。
【问题讨论】:
如果您使用的是自定义适配器,请从自定义适配器发布您的 getView 方法代码。 你的实现应该可以工作,你必须在某处做其他事情:)。 嗨 @BharatSharma 我刚刚发布了我的自定义适配器代码,请看一下谢谢... 在你的代码上运行 lint,tools.android.com/tips/lint 使用view.setMinimumHeight(minHeight);
在getView()
类的getView()
方法中设置视图的高度
【参考方案1】:
问题是你误用了inflator,不要给null作为根节点
如果你将null作为根节点传递,那么你在xml中设置的所有大小参数都不起作用
正确的代码是
view = inflater.inflate(R.layout.lview_row, parent, false);
http://www.doubleencore.com/2013/05/layout-inflation-as-intended/
【讨论】:
尽管这有点道理,但这并不适用于所有情况。更好的答案需要更多的反省,因为提供的链接没有深入挖掘真正的问题 有些项目被隐藏了请帮忙【参考方案2】:<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:background="@drawable/list_selector"
android:padding="3dip"
android:layout_
android:gravity="center"
android:layout_>
<TextView android:layout_ android:text="ITEM"
android:layout_ android:id="@+id/txtItem"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="15sp"
android:textStyle="bold"
android:textColor="#040404"></TextView>
<TextView android:layout_ android:text="MANUFACTURER"
android:layout_ android:id="@+id/txtItemTwo"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textSize="14sp"
android:textColor="#FF7F50"
></TextView>
</LinearLayout>
如果您的文本中有不止一行,请将您的文本设置为单行,这样它就不会出现在第二行并改变每行的高度。
【讨论】:
【参考方案3】:在MyEventAdapter
类中覆盖方法getView(int position, View convertView, ViewGroup parent)
并使用view.setMinimumHeight(minHeight);
设置最小视图高度。
在方法 `getView(int position, View convertView, ViewGroup parent)' 中设置视图的最小高度如下:
public View getView(int position, View convertView, ViewGroup parent)
ViewHolder title;
LayoutInflater inflater = activity.getLayoutInflater();
if (view == null)
view = inflater.inflate(R.layout.lview_row, null);
view.setMinimumHeight(minHeight); //set minimum height of view here
title = new ViewHolder();
title.txtViewTitle = (TextView) view.findViewById(R.id.txtItem);
title.txtViewTitleTwo = (TextView) view.findViewById(R.id.txtItemTwo);
view.setTag(title);
else
title = (ViewHolder) view.getTag();
title.txtViewTitle.setText(listTitle.get(position));
title.txtViewTitleTwo.setText(listFullText.get(position));
return view;
【讨论】:
【参考方案4】:如果您的文本中有不止一行,请将您的文本设置为单行,这样它就不会出现在第二行并改变每行的高度。
【讨论】:
【参考方案5】:首先你应该使用 sp 来指定文本的大小而不是倾斜 (dp),其次我认为你有一些矛盾的尺寸你有 2 个 15 + 14 dp 的文本字段只有 10 dp 的布局。尝试将布局高度增加到 40 dp 并更改 textview 的尺寸以使用 sp
【讨论】:
以上是关于如何设置 ListView 行高的主要内容,如果未能解决你的问题,请参考以下文章