java - GridView 项目剪裁和不同的高度

标签 java android xml gridview android-gridview

创建 GridView 后,我注意到某些 GridView 项目的高度比其他项目高。需要做什么来确保所有 GridView 项目的高度相同(不管屏幕方向和不同的文本长度)+ 以确保 GridView 内容不会被剪裁?

enter image description here enter image description here

sw600dp/activity_main.xml

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

    <GridView
        android:id="@+id/abslistview_main"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:layout_centerInParent="true"
        android:layout_marginStart="20dp"
        android:layout_marginEnd="20dp"
        android:horizontalSpacing="20dp"
        android:verticalSpacing="20dp"
        android:numColumns="auto_fit"
        />

</RelativeLayout>

sw600dp/item_abslistview.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/tools"
    android:id="@+id/cardview_mainitem"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    card_view:cardElevation="4dp"
    card_view:cardCornerRadius="3dp">
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="15dp"
        android:paddingBottom="15dp"
        android:background="@drawable/ripple_background"
        android:orientation="horizontal">
        <ImageView
            android:id="@+id/griditem_img"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginStart="10dp"
            android:layout_marginEnd="10dp" />

        <TextView
            android:id="@+id/griditem_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:textColor="@android:color/white"
            android:textAppearance="?android:attr/textAppearanceLarge" />
    </LinearLayout>
</android.support.v7.widget.CardView>

MainActivity.java

public class MainActivity extends Activity {

    private ArrayList<MainItem> mainArrayList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        AbsListView absListView = findViewById(R.id.abslistview_main);
        settingData();

        ArrayAdapter<MainItem> adapter = new AbsListViewAdapter(this, R.layout.item_abslistview, mainArrayList);
        absListView.setAdapter(adapter);
    }

    private void settingData() {
        mainArrayList = new ArrayList<>();

        mainArrayList.add(new MainItem(R.drawable.ic_info_outline_white, "Fruit and vegetables"));
        mainArrayList.add(new MainItem(R.drawable.ic_info_outline_white, "Potatoes, bread, rice, pasta and other starchy carbohydrates"));
        mainArrayList.add(new MainItem(R.drawable.ic_info_outline_white, "Oils and spreads"));
        mainArrayList.add(new MainItem(R.drawable.ic_info_outline_white, "Dairy and alternatives"));
        mainArrayList.add(new MainItem(R.drawable.ic_info_outline_white, "Beans, pulses, fish, eggs, mint and other proteins"));
        mainArrayList.add(new MainItem(R.drawable.ic_info_outline_white, "More information"));
    }
}

最佳答案

在自定义列表项的 xml 中使用固定高度而不是 wrap_content。

如果您想显示 GridView 的所有项目而不是滚动行为,请使用带有权重的嵌套线性布局,或尝试一些其他布局。

关于java - GridView 项目剪裁和不同的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46504180/

相关文章:

Java 流 : get latest version of user records

android - 如何处理两个 Activity 的相同 Intent 过滤器?

objective-c - 运行时 xml/json 生成目录内容

ios - 当我从详细 View 返回时图像数组加倍

Java ASCII 转换

java - 如何在 RxJava 2 中使用 TestObserver 对对象列表进行单元测试?

java - jndi.properties 的所有属性名称是什么?

java - Firebase:如何在不更新/删除子子项的情况下为子项设置值?

java - 安全异常 : Permission 'android.permission.LOCATION_HARDWARE' not granted

xml - 在 <xsl :match ="myTag*"> 中使用通配符