使它成为android中的GridLayout方式

时间:2013-01-07 20:02:38

标签: java android grid-layout

您好我有这个屏幕

enter image description here

我是用这段代码制作的。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res/com.example.test.project"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

            <Button
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                app:layout_gravity="fill_horizontal"
                android:text="1" />

            <Button
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                app:layout_gravity="fill_horizontal"
                android:text="2" />

            <Button
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                app:layout_gravity="fill_horizontal"
                android:text="3" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

            <Button
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                app:layout_gravity="fill_horizontal"
                android:text="4" />

            <Button
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                app:layout_gravity="fill_horizontal"
                android:text="5" />

            <Button
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                app:layout_gravity="fill_horizontal"
                android:text="6" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

            <Button
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                app:layout_gravity="fill_horizontal"
                android:text="7" />

            <Button
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                app:layout_gravity="fill_horizontal"
                android:text="8" />

            <Button
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                app:layout_gravity="fill_horizontal"
                android:text="9" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

            <Button
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                app:layout_gravity="fill_horizontal"
                android:text="10" />

            <Button
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                app:layout_gravity="fill_horizontal"
                android:text="11" />

            <Button
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                app:layout_gravity="fill_horizontal"
                android:text="12" />
        </LinearLayout>
    </LinearLayout>

</RelativeLayout>

有没有办法用GridLayout做,我尝试使用GridLayout,但它只能连续使用2个按钮,但有3个它不起作用,我使用了{{3}中的代码回答?

2 个答案:

答案 0 :(得分:0)

你必须更改GridLayout android:rowCount =“3”。试试这个linkthis

<GridLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:columnCount="3"
    android:rowCount="3" >

    <TextView
        android:text="1,1" />

    <TextView
        android:text="1,2" />

    <TextView
        android:text="1,3" />


    <TextView
        android:text="2,1" />

    <TextView
        android:text="2,2" />

    <TextView
        android:text="2,3" />

    <TextView
        android:text="3,1" />

    <TextView
        android:text="3,2" />

    <TextView
        android:text="3,3" />


</GridLayout>

编辑: 阅读此linklink

答案 1 :(得分:0)

你不喜欢我的答案,但明白地说,你做不到。 GridLayout不支持任何类型的布局“加权”。对于文本,您通常可以使用app:layout_gravity选项,但对于像按钮这样的项目,这将无效。

最好的办法是在GridLayout中使用线性布局。并没有真正改善你已经拥有的东西,但至少你可以摆脱你拥有的第一个线性布局。您需要的只是顶部的GridLayout,然后是每行按钮的1个线性布局。这会提高性能。

http://android-developers.blogspot.com/2011/11/new-layout-widgets-space-and-gridlayout.html

“从其他布局模拟功能”部分提示如何在此方案中使用GridLayout中的LinearLayout是更好的选择。