【问题标题】:Listview items with 25% height高度为 25% 的列表视图项目
【发布时间】:2016-10-11 16:09:33
【问题描述】:

我有一个列表视图并使用自定义适配器填充它。我希望我所有的列表视图项目的高度为 25%。我尝试使用布局权重但没有结果。有什么帮助吗?

这是我的代码

导航适配器

public class NavigationAdapter extends ArrayAdapter<String> {

    private final Activity context;
    private final String[] NavigationTexts;
    private final String[] NavigationImages;

    public NavigationAdapter(Activity context, String[] NavigationTexts, String[] NavigationImages) {
        super(context, R.layout.navigation_layout, NavigationTexts);

        this.context=context;
        this.NavigationTexts=NavigationTexts;
        this.NavigationImages=NavigationImages;
    }

    public View getView(int position, View view, ViewGroup parent) {
        LayoutInflater inflater=context.getLayoutInflater();
        View rowView = inflater.inflate(R.layout.navigation_layout, parent, false);

        TextView Name = (TextView) rowView.findViewById(R.id.NavigationText);
        ImageView ImgButton = (ImageView) rowView.findViewById(R.id.NavigationImage);


        Name.setText(NavigationTexts[position]);
        int resID = context.getResources().getIdentifier(NavigationImages[position], "drawable", getContext().getPackageName());
        ImgButton.setImageResource(resID);

        return rowView;

    }

}

和我的布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:layout_width="fill_parent"
        android:layout_height="150dp"
        android:id="@+id/NavigationImage"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:scaleType="fitXY" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Large Text"
        android:id="@+id/NavigationText"
        android:layout_alignBottom="@+id/NavigationImage"
        android:layout_marginBottom="56dp"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:textColor="#ffffff"
        android:gravity="center" />
</RelativeLayout>

【问题讨论】:

  • 是的,很好。告诉我,你想让 4 个列表视图项分别占用 25% 的空间吗?或者您想要其他东西占用 25% 的空间?

标签: android listview height android-arrayadapter


【解决方案1】:

您可以在您的 customAdapter 中手动设置它。由于您已经覆盖了 onCreateViewHolder 方法并为列表项增加了实际布局,您可以这样做:

伪代码:

var listViewHeight = context.getResources().getDisplayMetrics().height / 4;
//if you have toolbar or some other component, take its height into calculation also.
View view = inflater.inflate(layoutId, container, false);
View listViewContainer = view.findViewById(containerId);
listViewContainer.getLayoutParams().height = listViewheight;

更新:

我建议使用 RecyclerView 而不是 ListView 和 RecyclerView.Adapter 而不是 ArrayAdapter。但要回答你的问题:

与上面的逻辑相同。

将父级RelativeLayout的id设置为“layoutContainer”之类的,并在getView()方法中使用上面的行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    • 2013-02-18
    • 1970-01-01
    • 2012-01-05
    相关资源
    最近更新 更多