【问题标题】:Make Buttons in GridLayout auto adjust使 GridLayout 中的按钮自动调整
【发布时间】:2017-06-19 21:54:30
【问题描述】:

我正在尝试制作一系列按钮,有点像键盘,用于输入扑克牌。但是,网格布局中按钮的大小和位置在我测试的每台设备上都不同。我正在寻找将 3 列分布在屏幕上的最佳解决方案。任何建议表示赞赏。也可能有比我愿意接受的 gridlayout 更好的方法来做到这一点。你可能猜到了,我是安卓新手。提前致谢!

XML 代码:

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


<GridLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentStart="true"
    android:layout_marginBottom="8dp"
    android:columnCount="3"
    android:rowCount="5">

    <Button
        android:id="@+id/buttonK"
        android:layout_width="128dp"
        android:layout_height="50dp"
        android:text="King"/>

    <Button
        android:id="@+id/buttonD"
        android:layout_width="128dp"
        android:layout_height="50dp"
        android:text="Delete"/>

    <Button
        android:id="@+id/buttonG"
        android:layout_width="128dp"
        android:layout_height="50dp"
        android:text="Go!"/>

    <Button
        android:id="@+id/button10"
        android:layout_width="128dp"
        android:layout_height="50dp"
        android:text="10"/>

    <Button
        android:id="@+id/buttonJ"
        android:layout_width="128dp"
        android:layout_height="50dp"
        android:text="Jack"/>

    <Button
        android:id="@+id/buttonQ"
        android:layout_width="128dp"
        android:layout_height="50dp"
        android:text="Queen"/>

    <Button
        android:id="@+id/button7"
        android:layout_width="128dp"
        android:layout_height="50dp"
        android:text="7"/>

    <Button
        android:id="@+id/button8"
        android:layout_width="128dp"
        android:layout_height="50dp"
        android:text="8"/>

    <Button
        android:id="@+id/button9"
        android:layout_width="128dp"
        android:layout_height="50dp"
        android:text="9"/>

    <Button
        android:id="@+id/button4"
        android:layout_width="128dp"
        android:layout_height="50dp"
        android:text="4"/>

    <Button
        android:id="@+id/button5"
        android:layout_width="128dp"
        android:layout_height="50dp"
        android:text="5"/>

    <Button
        android:id="@+id/button6"
        android:layout_width="128dp"
        android:layout_height="50dp"
        android:text="6"/>

    <Button
        android:id="@+id/buttonA"
        android:layout_width="128dp"
        android:layout_height="50dp"
        android:text="Ace"/>

    <Button
        android:id="@+id/button2"
        android:layout_width="128dp"
        android:layout_height="50dp"
        android:text="2"/>

    <Button
        android:id="@+id/button3"
        android:layout_width="128dp"
        android:layout_height="50dp"
        android:text="3"/>
</GridLayout>

</RelativeLayout>

【问题讨论】:

    标签: android xml button


    【解决方案1】:

    我认为 Linearlayout 是一个很好的解决方案。您可以将 orientation horizantal 用于行,当按钮宽度为 0dp 且重量为 1 时,它适合所有屏幕尺寸

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        xmlns:app="http://schemas.android.com/apk/res-auto">
    
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_alignParentBottom="true">
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
    
            <Button
                android:id="@+id/buttonK"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="50dp"
                android:text="King"/>
    
            <Button
                android:id="@+id/buttonD"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="50dp"
                android:text="Delete"/>
    
            <Button
                android:id="@+id/buttonG"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="50dp"
                android:text="Go!"/>
                <Button
                    android:id="@+id/button10"
                    android:layout_width="0dp"
                    android:layout_weight="1"
                    android:layout_height="50dp"
                    android:text="10"/>
            
            </LinearLayout>
    
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
    
                <Button
                    android:id="@+id/buttonK1"
                    android:layout_width="0dp"
                    android:layout_weight="1"
                    android:layout_height="50dp"
                    android:text="King"/>
    
                <Button
                    android:id="@+id/buttonD1"
                    android:layout_width="0dp"
                    android:layout_weight="1"
                    android:layout_height="50dp"
                    android:text="Delete"/>
    
                <Button
                    android:id="@+id/buttonG1"
                    android:layout_width="0dp"
                    android:layout_weight="1"
                    android:layout_height="50dp"
                    android:text="Go!"/>
                <Button
                    android:id="@+id/button101"
                    android:layout_width="0dp"
                    android:layout_weight="1"
                    android:layout_height="50dp"
                    android:text="10"/>
    
            </LinearLayout>
            
        </LinearLayout>
    
    </RelativeLayout>

    【讨论】:

    • 在此布局中,您可以删除RelativeLayout 标记并将第一个LinearLayout 设为您的根元素。
    • 这很好,但由于开发人员想要创建一个键盘,我认为线性布局应该保留为键盘布局
    猜你喜欢
    • 2016-03-09
    • 1970-01-01
    • 2019-11-20
    • 2014-01-23
    • 2019-05-01
    • 2019-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多