这可能是来自Android GridView Items Resizing
的相反问题我有一个GridView,它设置为显示由具有9补丁背景和TextView的LinearLayout制作的自定义布局。 LinearLayout具有10dp填充集,因此TextView保留在中心补丁中。
当我测试数据以扩展TextView时,LinearLayout也会出现扩展(yay!),但GridView正在切断底部。在下图中,您可以看到右下角元素的右下曲率被截断。
MyClasses.java:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_classes);
notebookGrid = (GridView)findViewById(R.id.NotebookGrid);
ArrayList<String> class1 = new ArrayList<>(Arrays.asList("1", "Ms. Soldan's Class"));
ArrayList<String> class2 = new ArrayList<>(Arrays.asList("2", "Ms. Perry's Class"));
ArrayList<String> class3 = new ArrayList<>(Arrays.asList("3", "Ms. Panjwani's Class"));
ArrayList<String> class4 = new ArrayList<>(Arrays.asList("4", "Ms. Smith's Really Awesome Super Cool Class of Many Geniuses"));
ArrayList<ArrayList<String>> classArray = new ArrayList<>();
classArray.add(class1);
classArray.add(class2);
classArray.add(class3);
classArray.add(class4);
notebookGrid.setAdapter(new MyClassesAdapter(this, classArray));
}
MyClassesAdapter.java:
public View getView(int position, View convertView, ViewGroup parent) {
ArrayList<String> thisClass = getItem(position);
ViewHolder vh;
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.grid_class_notebook, parent,false);
vh = new ViewHolder(convertView,R.id.NotebookTitle);
convertView.setTag(vh);
} else {
vh = (ViewHolder)convertView.getTag();
}
vh.TitleView.setText(thisClass.get(1));
return convertView;
}
grid_class_notebook.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:background="@drawable/notebook">
<Space
android:layout_width="wrap_content"
android:layout_height="10dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center"
android:background="@color/White"
android:padding="10dp"
android:textStyle="bold"
android:textSize="12sp"
android:id="@+id/NotebookTitle"
/>
</LinearLayout>
activity_my_classes:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="10dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="22sp"
android:gravity="left"
android:padding="25dp"
android:text="@string/classes_title"
android:textStyle="bold"/>
<GridView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:numColumns="2"
android:padding="15dp"
android:id="@+id/NotebookGrid"/>
</LinearLayout>
如何让元素或行长大以响应更大的TextView子项?
答案 0 :(得分:0)
所以这只花了我一个月的时间来回答我自己。这里发生的事情是GridView本身很短,但项目本身实际上是正确的大小。我尝试滚动笔记本电脑从未想过,但我今天就这样做了,剩下的图像出现了。
基本上错误是GridView的高度为&#34; wrap_content&#34;。我已将其更改为0dp的高度,并添加了权重= 1的标记,因为我最终会在GridView下面添加一些其他元素。 activity_my_classes的新xml代码:
<GridView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:numColumns="2"
android:padding="15dp"
android:id="@+id/NotebookGrid"/>