Gridlayout未显示,Android studio

时间:2016-02-27 13:52:38

标签: android android-gridlayout

我正在尝试在android studio中创建一个应用程序,由于某些原因,一个gridLayout决定不显示,尽管它占用了屏幕上的必要空间。 Image from android studioactual 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>

2 个答案:

答案 0 :(得分:0)

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

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

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

定义gridlayout的名称,我在示例“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;
}

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

答案 1 :(得分:0)

提供 第1行和第1列

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

第1行和第2列

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

为每个孩子做这件事取决于行和列