android - 如何强制 GridView 使用整个屏幕(无论显示大小如何)?

标签 android gridview android-2.1-eclair android-2.0-eclair

我有以下布局文件,它有一个 GridView 和一个 ImageView 作为背景。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#FFFFFF">
    <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|right"
            android:layout_marginRight="-70dp"
            android:layout_marginBottom="-50dp"
            android:src="@drawable/s_background"/>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:layout_width="fill_parent"
                  android:layout_height="fill_parent">
        <GridView xmlns:android="http://schemas.android.com/apk/res/android"
                  android:id="@+id/gridview"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:columnWidth="90dp"
                  android:numColumns="auto_fit"
                  android:verticalSpacing="10dp"
                  android:horizontalSpacing="10dp"
                  android:stretchMode="columnWidth"
                  android:gravity="center"/>
    </LinearLayout>
</FrameLayout>

这是我在网格的每个“单元格”中用于实际项目的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent">
    <TextView
            android:id="@+id/cardInGrid"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:singleLine="true"
            android:textSize="40sp"
            android:textColor="#660099"
            android:typeface="serif"/>
</LinearLayout>

我现在在我的设备上看到以下内容:

enter image description here

有什么方法可以使 GridView 中的每个项目都变大,使其适合屏幕大小,并且我在显示屏底部没有未使用的空白区域?

这在模拟器上运行良好,但在设备上屏幕分辨率更高,因此底部出现空白。

非常感谢

最佳答案

这会很有效。不要忘记垂直间距。

public class MyAdapter extends BaseAdapter {
    public static int ROW_NUMBER = 5;

    public MyAdapter (Context mContext, ArrayList<String> list) {
        this.context = mContext;
        lstDate = list;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            convertView = LayoutInflater.from(context).inflate(R.layout.item, null);
        }
        // we need to decrease cell height to take into account verticalSpacing for GridView
        int cellHeight = StrictMath.max(parent.getHeight() / ROW_NUMBER - parent.getContext().getResources().getDimensionPixelOffset(R.dimen.grid_spacing), 320);
        AbsListView.LayoutParams param = new AbsListView.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT,
                parent.getHeight() / ROW_NUMBER);
        convertView.setLayoutParams(param);

        return convertView;
    }

关于android - 如何强制 GridView 使用整个屏幕(无论显示大小如何)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5690144/

相关文章:

java - 无法使用 Robotium 与屏幕中的所有 TextView 进行交互

Android 2.1文件读取速度慢

android - Bottom Sheet 向下滑动行为

c# - 当页码 = 1 时在 GridView 中隐藏 datapager

android - 在 GridView 中对 ImageView 执行 onClickListener

c# - 使用 javascript 设置的文本框值无法使用 c# 访问

Android 应用程序无法在我的平板电脑上运行

android - android 2.1 中的 AlertDialog

Android - 按住按钮重复操作

android - ionic 应用程序无法连接到本地主机