gpt4 book ai didi

android - ListView 项目不会将宽度扩展到 fill_parent

转载 作者:太空宇宙 更新时间:2023-11-03 10:51:38 26 4
gpt4 key购买 nike

我有一个自定义的 ViewGroup,它从 xml 布局扩展一个 ListView。列表项布局是从另一个 xml 文件扩展而来的。所有 View 都设置为 fill_parentListView 填充其父元素,但 ListView 项不填充。

我试过将 ListView 放在 LinearLayout 中并为其分配权重。也尝试了 RelativeLayout。此外,我以编程方式构建了 ListView,没有使用 xml 布局。甚至在将 View 添加到 ViewGroup 之前更改了 LayoutParams

我也考虑了这些帖子:Width of clickable area in ListView w/ onListItemClick , In Android, how can I set a ListView item's height and width? , Android Listview width prob .

关于为什么项目没有扩展到填充宽度的任何想法?以及如何扩展它们?

MyViewGroup 类:

public class MyViewGroup extends ViewGroup {

public MyViewGroup(Context context, AttributeSet attrs) {
super(context, attrs);
generateMyViewGroup();

}

private void generateMyViewGroup()
{
ListView main = (ListView) View.inflate(getContext(), R.layout.layout_main, null);

main.setAdapter(new MyAdapter(getContext()));

this.addView(main);
}

@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
this.getChildAt(0).layout(l, t, r, b);
}
}

ListView xml 布局:

<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginRight="3dp"
android:background="#77000000"
android:cacheColorHint="#00000000"
android:divider="#00000000"
android:dividerHeight="0dp"
android:drawSelectorOnTop="false"
android:scrollbars="vertical" >
</ListView>

ListView 项目布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_main_category"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/mainBackground"
android:gravity="fill_horizontal|center_vertical"
android:orientation="vertical" >

<TextView
android:id="@+id/main_category"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:paddingBottom="7dp"
android:paddingLeft="20dp"
android:paddingRight="5dp"
android:paddingTop="20dp"
android:text="test"
android:textColor="@color/mainCategory"
android:textSize="15sp"
android:textStyle="bold" />

</LinearLayout>

MyAddapter 类的一部分:

public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;

if(null == convertView)
{
LayoutInflater inflater = LayoutInflater.from(context);
convertView = inflater.inflate(R.layout.layout_main_category, null);

viewHolder = new ViewHolder();

viewHolder.mainItemTitle = (TextView) convertView.findViewById(R.id.main_category);

convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}

viewHolder.mainItemTitle.setText("text");

return convertView;
}

private static class ViewHolder {
public TextView menuItemTitle;
}

最佳答案

ViewGroup 最终没有正常工作。我也尝试过使用 LinearLayout。但是 RelativeLayout 最终正确地膨胀了布局。因此,我的 xml 布局和适配器保持不变,但我更改了主类以扩展 RelativeLayout。还删除了 onLayout()

MyView 类:

public class MyView extends RelativeLayout {
//Extra code unchanged ....

private void generateMyView()
{
ListView menu = (ListView) View.inflate(getContext(), R.layout.layout_main, null);

menu.setAdapter(new MyAdapter(getContext()));

this.addView(menu);
}

//Removed onLayout()
}

关于android - ListView 项目不会将宽度扩展到 fill_parent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12568274/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com