如何设置ListView行高

40
下面的图片显示行的高度不同。我希望行的高度相同。

enter image description here

在我的程序中,我从解析的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_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>

设置高度

android:layout_height="10dp"

但在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方法的代码。 - Bharat Sharma
你的实现应该是可行的,你一定在其他地方做了些什么 :)。 - Warpzit
嗨@BharatSharma,我刚刚发布了我的自定义适配器代码,请看一下,谢谢... - user755278
运行lint检查你的代码,http://tools.android.com/tips/lint - L7ColWinters
еңЁдҪ зҡ„MyEventAdapterзұ»зҡ„getView()ж–№жі•дёӯдҪҝз”Ёview.setMinimumHeight(minHeight);жқҘи®ҫзҪ®и§Ҷеӣҫзҡ„й«ҳеәҰгҖӮ - Ravi1187342
5个回答

138

尽管这个解释有一定道理,但并不适用于每种情况。需要更深入的思考才能给出更好的答案,因为提供的链接没有深入探讨真正的问题。 - leRobot
一些项目正在隐藏,请帮忙。 - W I Z A R D

1

在您的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;    
}

1
<?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>

如果您的文本有多行,请将其设置为单行,这样它就不会出现在第二行,并更改每行的高度。


0
如果您的文本中有多行内容,则将其设置为单行,这样它就不会出现在第二行,并更改每行的高度。

-2
首先,你应该使用sp来指定文本的大小而不是dip(dp),其次,我认为你有一些矛盾的尺寸,在仅有10 dp的布局中有2个15 + 14 dp的文本字段。尝试将您的布局高度增加到40 dp,并更改textview的尺寸以使用sp。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接