【问题标题】:How to set custom list view item's height...?如何设置自定义列表视图项的高度...?
【发布时间】:2011-09-23 14:31:04
【问题描述】:

我有一个自定义列表视图,其中包含两个文本视图和按钮。 我已经自定义了按钮样式。 在列表视图中,每一行都不适合正确显示我的按钮。 我想更改列表项的高度。 我该怎么做..?

这是我的列表视图。

<ListView android:layout_width="fill_parent"
        android:scrollbars="none" android:footerDividersEnabled="false"
        android:minHeight="50dp"
        android:listSelector="#00000000" android:dividerHeight="0px"
        android:divider="#00000000" android:layout_height="fill_parent"
        android:layout_marginLeft="5dp" android:layout_marginTop="5dp"
        android:layout_marginRight="5dp" android:id="@+id/list_view"
        android:cacheColorHint="#00000000" android:background="#00000000" />

我的自定义视图 xml

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="fill_parent"
    android:layout_height="wrap_content">

    <TextView android:layout_width="150dp"
        android:layout_height="wrap_content" 
        android:textColor="#808080" android:text="Subtitle 2" android:id="@+id/text1" 
        android:layout_marginLeft="5dp"
        android:singleLine="true"/>

    <TextView android:layout_width="60dp"
        android:layout_height="wrap_content" 
        android:textColor="#808080" android:text="$ 00.00" android:id="@+id/text2" 
        android:singleLine="true"/>

    <Button android:layout_width="80dp" android:layout_height="25dp"
        android:background="@drawable/type10_subbg" android:text="Add"
        android:textSize="20dp" android:textStyle="bold" android:textColor="#153E7E"
        android:id="@+id/add" />
</LinearLayout>   

这是我的 getView。

@SuppressWarnings("unchecked")
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder;
    pos = position;
    holder = new ViewHolder();
    convertView = inflater.inflate(R.layout.type10_sub, null);          
    holder.text1 = (TextView) convertView.findViewById(R.id.text1);
    holder.text2 = (TextView) convertView.findViewById(R.id.text2);
    holder.add = (Button) convertView.findViewById(R.id.add);
    holder.add.setTag(String.valueOf(position));
    holder.add.setOnClickListener(new OnClickListener() {           
        @Override
        public void onClick(View v) {
            Button b = (Button)v;
            int tag = Integer.valueOf((String)b.getTag());
            System.out.println("Added at "+tag);
            System.out.println("Data = "+((HashMap<String,Object>)list.get(tag)).get("text1").toString());
            System.out.println("Price = "+((HashMap<String,Object>)list.get(tag)).get("text2").toString());             }
    });         holder.text1.setText(((HashMap<String,Object>)list.get(position)).get("text1").toString());
    holder.text2.setText(((HashMap<String,Object>)list.get(position)).get("text2").toString());
    convertView.setTag(holder);
    return convertView;
}

提前谢谢....!

【问题讨论】:

  • 你用过wrap_content吗?向我们展示您的代码!你在用适配器吗?
  • @Sherif 我已经更新了代码。
  • 如何设置列表视图中的项目?
  • 好的,您可以为适配器提供您的自定义视图!这意味着您的问题出在自定义视图中。请让我看看
  • @Sherif 我已经更新了代码。

标签: android android-layout android-widget


【解决方案1】:

convertedview.setlayoutparams(new Listview.setlayoutparams(width, height));

先把LinearLayout换成ListView

然后将其编辑为ListView,否则它将不起作用。这就是诀窍。

【讨论】:

  • 我收到“ListView.setlayoutparams 无法解析为类型”
  • 先放线性布局而不是列表视图并保存。然后将其更改为列表视图。例如:新的 LinerLayout.setLayoutparams....
  • convertview.setLayoutParams(new ListView.LayoutParams(ListView.LayoutParams.MATCH_PARENT, 120));
【解决方案2】:

在 R.layout.type10_sub 元素中设置 minHeight

【讨论】:

    【解决方案3】:

    在自定义视图的新高度中硬编码非常容易,只需为最高级别的项目指定layout_height,在本例中为线性布局。下面我展示了如何将其设置为 100dp

    <?xml version="1.0" encoding="UTF-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="horizontal" android:layout_width="fill_parent"
        android:layout_height="100dp">
    
        ....
    </LinearLayout> 
    

    【讨论】:

    • 如果将 ListView 中的 minHeight 属性设置为更大的值,比如 300?
    【解决方案4】:

    在线性布局中给出 android:layout_height="100dp" 而不是 wrap_content

    【讨论】:

      【解决方案5】:

      使用:

      if(convertView == null){
          convertView = inflater.inflate(R.layout.type10_sub, parent);   
      }
      

      【讨论】:

        猜你喜欢
        • 2012-08-05
        • 2020-09-22
        • 2014-09-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-25
        • 2019-05-04
        • 1970-01-01
        相关资源
        最近更新 更多