GridView项目被剪裁和不同的高度

时间:2017-09-30 15:26:02

标签: java android xml gridview android-gridview

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

file download support 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"));
    }
}

2 个答案:

答案 0 :(得分:1)

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

如果要显示网格视图的所有项而不是滚动行为,请使用带有权重的嵌套线性布局,或尝试其他布局。

答案 1 :(得分:1)

尝试此操作:将文件中图像视图的属性更改为您选择的特定高度。谢谢 android:layout_height="50dp"

这可能有助于解决问题。指定的属性将使其具有一定的高度,并且对于所有项目保持相等。