网格布局使元素均匀分布

时间:2018-03-04 17:27:27

标签: android android-layout

我正在尝试使用gridlayout制作GUI,并且我希望每个GUI元素行均匀分布,以便它们填满整个屏幕,但是遵循xml代码会导致前三行仅覆盖屏幕的30%,最后一个按钮覆盖70 %屏幕边距。是什么导致了这个问题,因为我已经指定行数为4?

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="......"
    android:rowCount="4"
    android:columnCount="2">

<TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Mobile"
    android:layout_marginLeft="30dp"/>
<EditText
    android:id="@+id/editText3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="phone"
    android:ems="10"
    android:layout_gravity="center_horizontal" />

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Email"
    android:layout_marginLeft="30dp"/>
<EditText
    android:id="@+id/editText2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="textEmailAddress"
    android:ems="10"
    android:layout_gravity="center_horizontal" />

<TextView
    android:id="@+id/textView3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Password"
    android:layout_marginLeft="30dp"/>

<EditText
    android:id="@+id/editText4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="10"
    android:inputType="textPassword"
    android:layout_gravity="center_horizontal" />



<Button
    android:id="@+id/button8"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Login"
    android:onClick="Onclick_log"
    android:layout_columnSpan="2"
    android:layout_gravity="center"/>
</GridLayout>

2 个答案:

答案 0 :(得分:1)

在所有观看次数中使用android:layout_rowWeight="1"参数。

答案 1 :(得分:0)

您应该使用ListAdapter根据GridView的Google文档填充GridView的项目:

  

GridView 是一个以二维方式显示项目的ViewGroup,   可滚动的网格。网格项自动插入到   使用 ListAdapter 进行布局。

因此您无法在GridView内手动添加项目。 如果您希望拥有相同高度的行,则可以使用类似LinearLayout的内容,并将其子layout_height设置为0dp,将layout_weight设置为相等的值1.这是一个有4行的样本,每行是LinearLayout,但诀窍是将它们的高度设置为0dp并对所有行使用相等的权重:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">
        <!-- row 1-->
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">
        <!-- row 2-->
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">
        <!-- row 3-->
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">
        <!-- row 4-->
    </LinearLayout>

</LinearLayout>