如何设置ListView行高度
我向你展示下面的图像,其中行的高度是不一样的,我希望行应该是相同的高度。
在我的程序中,我从XML服务获取数据,我parsing并在列表视图中显示结果,但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_width="match_parent" android:gravity="center" android:layout_height="10dp"> <TextView android:layout_height="wrap_content" android:text="ITEM" android:layout_width="wrap_content" android:id="@+id/txtItem" android:textAppearance="?android:attr/textAppearanceLarge" android:textSize="15dip" android:textStyle="bold" android:textColor="#040404"></TextView> <TextView android:layout_height="wrap_content" android:text="MANUFACTURER" android:layout_width="wrap_content" android:id="@+id/txtItemTwo" android:textAppearance="?android:attr/textAppearanceMedium" android:textSize="14dip" android:textColor="#FF7F50" ></TextView> </LinearLayout>
我已经设定了高度
机器人:layout_height = “10dp”
但在listView上时仍然不一样。
这是我的getVieew自定义适配器: –
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; } }
任何人都请我正确的方式来获得所需的结果。
提前致谢。
问题是你错误的使用了充气机,不要给null作为根节点
如果您传递null作为根节点,则在xml中设置的所有大小参数都无法工作
正确的代码是
view = inflater.inflate(R.layout.lview_row, parent, false);
http://www.doubleencore.com/2013/05/layout-inflation-as-intended/
在view.setMinimumHeight(minHeight);
类中覆盖方法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; }
<?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_width="match_parent" android:gravity="center" android:layout_height="match_parent"> <TextView android:layout_height="wrap_content" android:text="ITEM" android:layout_width="wrap_content" android:id="@+id/txtItem" android:textAppearance="?android:attr/textAppearanceLarge" android:textSize="15sp" android:textStyle="bold" android:textColor="#040404"></TextView> <TextView android:layout_height="wrap_content" android:text="MANUFACTURER" android:layout_width="wrap_content" android:id="@+id/txtItemTwo" android:textAppearance="?android:attr/textAppearanceMedium" android:textSize="14sp" android:textColor="#FF7F50" ></TextView> </LinearLayout>
如果文本中有多行文本,则将文本设置为单行,以便它不会进入第二行,并更改每行的高度。
如果文本中有多行,那么将文本设置为单行,以便它不会进入第二行,并更改每行的高度。
首先你应该使用sp来指定文本的大小而不是dip(dp),其次我认为你有一些相互矛盾的维度,你只有10 dp的布局中有2个15 + 14 dp的文本字段。 尝试将您的布局高度增加到40 dp,并将您的textview的尺寸更改为使用sp