Gridlayout 不显示,Android studio

问题描述 投票:0回答:2

我正在尝试在 android studio 中创建一个应用程序,由于某些原因,一个 gridLayout 决定不显示,尽管它在屏幕上占用了必要的空间。 Image from android studio, actual screenshot from my phone

布局的XML文件:

<?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"
    android:background="#cbcde6"
    android:orientation="vertical"
    android:gravity="top|center">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Insert data"
        android:textAppearance="?android:attr/textAppearanceLarge"
        />

    <GridLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_gravity="top"
        android:columnCount="3"
        android:rowCount="3"
        android:visibility="visible">
        <EditText
            android:background="#ffffff"
            android:layout_height="30sp"
            android:layout_margin="15dp"
            android:layout_columnWeight="1"/>
        <EditText
            android:background="#ffffff"
            android:layout_height="30sp"
            android:layout_margin="15dp"
            android:layout_columnWeight="1"/>
        <EditText
            android:background="#ffffff"
            android:layout_height="30sp"
            android:layout_margin="15dp"
            android:layout_columnWeight="1"/>
        <EditText
            android:background="#ffffff"
            android:layout_height="30sp"
            android:layout_margin="15dp"
            android:layout_columnWeight="1"/>
        <EditText
            android:background="#ffffff"
            android:layout_height="30sp"
            android:layout_margin="15dp"
            android:layout_columnWeight="1"/>
        <EditText
            android:background="#ffffff"
            android:layout_height="30sp"
            android:layout_margin="15dp"
            android:layout_columnWeight="1"/>
        <EditText
            android:background="#ffffff"
            android:layout_height="30sp"
            android:layout_margin="15dp"
            android:layout_columnWeight="1"/>
        <EditText
            android:background="#ffffff"
            android:layout_height="30sp"
            android:layout_margin="15dp"
            android:layout_columnWeight="1"/>
        <EditText
            android:background="#ffffff"
            android:layout_height="30sp"
            android:layout_margin="15dp"
            android:layout_columnWeight="1"/>

    </GridLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:gravity="center">
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Calculate"
            android:textAppearance="?android:attr/textAppearanceLarge"/>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:gravity="center"
            >
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Result is: "
                android:textAppearance="?android:attr/textAppearanceLarge"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Result"
                android:textAppearance="?android:attr/textAppearanceLarge"/>

        </LinearLayout>

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:gravity="bottom">
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/backButton_text"
            android:id="@+id/back"
            android:onClick="onClickBackButton"
            android:textAppearance="?android:attr/textAppearanceLarge"/>

    </LinearLayout>

</LinearLayout>

android android-gridlayout
2个回答
0
投票

提供 第一行第一列

<EditText
            android:background="#ffffff"
            android:layout_height="30sp"
            android:layout_margin="15dp"
            android:layout_row="0"
            android:layout_column="0" />

第一行第二列

android:layout_row="0"
android:layout_column="1"

根据行和列为每个孩子做这件事


0
投票

android:layout_columnWeight 仅适用于 api 21 或更高版本,根据您设备中的屏幕截图,我猜测较低。

由于 edittext 没有指定宽度,也没有文本定义它以 0 宽度显示,这就是为什么你似乎看不到它。

我建议通过代码定义宽度和边距,以实现您在工作室屏幕截图上显示的内容:

为网格布局定义一个名称,我在示例中使用“gridlayout”

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    GridLayout g = (GridLayout)findViewById(R.id.gridlayout);
    int screenWidth = getScreenWidth();
    int cellWidth = screenWidth / 4;
    int margin = cellWidth / 8;
    GridLayout.LayoutParams p;
    for(int i = 0; i < g.getChildCount(); i++){
        p = (GridLayout.LayoutParams)g.getChildAt(i).getLayoutParams();
        p.width = cellWidth;
        p.setMargins(margin, margin, margin, margin);
    }
}

private int getScreenWidth(){
    Display display = getWindowManager().getDefaultDisplay();
    Point size = new Point();
    display.getSize(size);
    return  size.x;
}

它将为任何设备和任何方向设置相同的外观。

© www.soinside.com 2019 - 2024. All rights reserved.