创建GridView后,我注意到一些GridView项目的高度比其他项目高。需要做些什么才能确保所有GridView项目的高度相同(无论屏幕方向和文本长度如何)+以确保GridView内容不会被剪裁?
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"));
}
}
答案 0 :(得分:1)
在自定义列表项的xml中使用固定高度而不是wrap_content。
如果要显示网格视图的所有项而不是滚动行为,请使用带有权重的嵌套线性布局,或尝试其他布局。
答案 1 :(得分:1)
尝试此操作:将文件中图像视图的属性更改为您选择的特定高度。谢谢
android:layout_height="50dp"
这可能有助于解决问题。指定的属性将使其具有一定的高度,并且对于所有项目保持相等。