如何设置自定义列表视图项的高度?

4

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

这是我的列表视图。

<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;
}

谢谢您的提前帮助!


你是如何设置ListView中的项目的? - Sherif elKhatib
@Sherif 我尝试了android:layout_height="fill_parent"但没有任何变化...! - Noby
@Sherif 视图已更新。 - Noby
停止通过添加无用的内容来顶贴。为了吸引更多的关注,你可以开始设置问题的赏金。 - Shadow The Spring Wizard
请停止进行无用的编辑以使这个问题重新浮现。我将锁定此问题 24 小时以确保它不被修改。 - Tim Post
显示剩余5条评论
5个回答

3

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

首先,将ListView替换为LinearLayout

然后再将其编辑回ListView,否则它将无法正常工作。这是诀窍。


1
我得到了“ListView.setlayoutparams无法解析为类型”的错误。 - Noby
首先将LinearLayout放入代替ListView,保存。然后将其更改为ListView。例如:new LinearLayout.setLayoutparams.... - harish
2
convertview.setLayoutParams(new ListView.LayoutParams(ListView.LayoutParams.MATCH_PARENT, 120)); - ashakirov

1

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


0

为自定义视图硬编码一个新高度非常容易,只需指定最高级项目的layout_height,在本例中为LinearLayout。下面我展示了如何将其设置为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> 

1
如果您将ListView中的minHeight属性设置为更大的值,例如300,会发生什么? - slayton

0

使用:

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

0
在线性布局中,应该使用android:layout_height="100dp"代替wrap_content。

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