【问题标题】:GridLayout of Buttons auto aligns left, ignoring Grid lines按钮的 GridLayout 自动左对齐,忽略网格线
【发布时间】:2019-11-05 20:13:06
【问题描述】:

我有一个非常简单的按钮网格来制作键盘。在此,我希望“A”位于“Q”和“Z”的中间,所以我需要 20 列,而不是我需要的 10 列,每个键跨越 2 列。这是xml代码:

<GridLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/GridLayout1"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:columnCount="20"
    android:rowCount="4"
    android:background="#ffffff"
    >

    <Button
        android:onClick="keyPress"
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:id="@+id/keyQ"
        android:text="Q"
        android:layout_column="0"
        android:layout_row="0"
        android:layout_columnSpan="2"
        />
    <Button
        android:onClick="keyPress"
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:id="@+id/keyW"
        android:text="W"
        android:layout_column="2"
        android:layout_row="0"
        android:layout_columnSpan="2"
        />
    <Button
        android:onClick="keyPress"
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:id="@+id/keyE"
        android:text="E"
        android:layout_column="4"
        android:layout_row="0"
        android:layout_columnSpan="2"
        />
    <Button
        android:onClick="keyPress"
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:id="@+id/keyR"
        android:text="R"
        android:layout_column="6"
        android:layout_row="0"
        android:layout_columnSpan="2"
        />
    <Button
        android:onClick="keyPress"
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:id="@+id/keyT"
        android:text="T"
        android:layout_column="8"
        android:layout_row="0"
        android:layout_columnSpan="2"
        />
    <Button
        android:onClick="keyPress"
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:id="@+id/keyY"
        android:text="Y"
        android:layout_column="10"
        android:layout_row="0"
        android:layout_columnSpan="2"
        />
    <Button
        android:onClick="keyPress"
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:id="@+id/keyU"
        android:text="U"
        android:layout_column="12"
        android:layout_row="0"
        android:layout_columnSpan="2"
        />
    <Button
        android:onClick="keyPress"
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:id="@+id/keyI"
        android:text="I"
        android:layout_column="14"
        android:layout_row="0"
        android:layout_columnSpan="2"
        />
    <Button
        android:onClick="keyPress"
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:id="@+id/keyO"
        android:text="O"
        android:layout_column="16"
        android:layout_row="0"
        android:layout_columnSpan="2"
        />
    <Button
        android:onClick="keyPress"
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:id="@+id/keyP"
        android:text="P"
        android:layout_column="18"
        android:layout_row="0"
        android:layout_columnSpan="2"
        />

    <Button
        android:onClick="keyPress"
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:id="@+id/keyA"
        android:text="A"
        android:layout_column="1"
        android:layout_row="1"
        android:layout_columnSpan="2"
        />
    <Button
        android:onClick="keyPress"
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:id="@+id/keyS"
        android:text="S"
        android:layout_column="3"
        android:layout_row="1"
        android:layout_columnSpan="2"
        />
    <Button
        android:onClick="keyPress"
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:id="@+id/keyD"
        android:text="D"
        android:layout_column="5"
        android:layout_row="1"
        android:layout_columnSpan="2"
        />
    <Button
        android:onClick="keyPress"
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:id="@+id/keyF"
        android:text="F"
        android:layout_column="7"
        android:layout_row="1"
        android:layout_columnSpan="2"
        />
    <Button
        android:onClick="keyPress"
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:id="@+id/keyG"
        android:text="G"
        android:layout_column="9"
        android:layout_row="1"
        android:layout_columnSpan="2"
        />
    <Button
        android:onClick="keyPress"
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:id="@+id/keyH"
        android:text="H"
        android:layout_column="11"
        android:layout_row="1"
        android:layout_columnSpan="2"
        />
    <Button
        android:onClick="keyPress"
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:id="@+id/keyJ"
        android:text="J"
        android:layout_column="13"
        android:layout_row="1"
        android:layout_columnSpan="2"
        />
    <Button
        android:onClick="keyPress"
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:id="@+id/keyK"
        android:text="K"
        android:layout_column="15"
        android:layout_row="1"
        android:layout_columnSpan="2"
        />
    <Button
        android:onClick="keyPress"
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:id="@+id/keyL"
        android:text="L"
        android:layout_column="17"
        android:layout_row="1"
        android:layout_columnSpan="2"
        />
    <Button
        android:onClick="keyPress"
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:id="@+id/keyCaps"
        android:text="????"
        android:layout_column="0"
        android:layout_row="2"
        android:layout_columnSpan="2"
        />
    <Button
        android:onClick="keyPress"
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:id="@+id/keyZ"
        android:text="Z"
        android:layout_column="2"
        android:layout_row="2"
        android:layout_columnSpan="2"
        />
    <Button
        android:onClick="keyPress"
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:id="@+id/keyX"
        android:text="X"
        android:layout_column="4"
        android:layout_row="2"
        android:layout_columnSpan="2"
        />
    <Button
        android:onClick="keyPress"
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:id="@+id/keyC"
        android:text="C"
        android:layout_column="6"
        android:layout_row="2"
        android:layout_columnSpan="2"
        />
    <Button
        android:onClick="keyPress"
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:id="@+id/keyV"
        android:text="V"
        android:layout_column="8"
        android:layout_row="2"
        android:layout_columnSpan="2"
        />
    <Button
        android:onClick="keyPress"
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:id="@+id/keyB"
        android:text="B"
        android:layout_column="10"
        android:layout_row="2"
        android:layout_columnSpan="2"
        />
    <Button
        android:onClick="keyPress"
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:id="@+id/keyN"
        android:text="N"
        android:layout_column="12"
        android:layout_row="2"
        android:layout_columnSpan="2"
        />
    <Button
        android:onClick="keyPress"
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:id="@+id/keyM"
        android:text="M"
        android:layout_column="14"
        android:layout_row="2"
        android:layout_columnSpan="2"
        />
    <Button
        android:onClick="keyPress"
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:id="@+id/keyDelete"
        android:text="◀️"
        android:layout_column="16"
        android:layout_row="2"
        android:layout_columnSpan="4"
        />
    <Button
        android:onClick="keyPress"
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:id="@+id/keyColon"
        android:text=":"
        android:layout_column="1"
        android:layout_row="3"
        android:layout_columnSpan="3"
        />
    <Button
        android:onClick="keyPress"
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:id="@+id/keySpace"
        android:text=""
        android:layout_column="4"
        android:layout_row="3"
        android:layout_columnSpan="12"
        />
    <Button
        android:onClick="keyPress"
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:id="@+id/keyPeriod"
        android:text="."
        android:layout_column="16"
        android:layout_row="3"
        android:layout_columnSpan="3"
        />

</GridLayout>

我希望键盘看起来正常(如上所述),但空列似乎被忽略了,键盘最终看起来像这样:

Picture of the result of the XML layout file

【问题讨论】:

    标签: android android-layout grid-layout android-gridlayout


    【解决方案1】:

    将它们全部放在一个viewgroup 并在它们的两侧放一些枕头:

        <?xml version="1.0" encoding="utf-8"?>
    <GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/GridLayout1"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:background="#ffffff"
        android:columnCount="20"
        android:rowCount="4"
    
        >
    
        <Button
            android:id="@+id/keyQ"
            android:layout_width="0dp"
            android:layout_row="0"
            android:layout_column="0"
            android:layout_columnSpan="2"
            android:layout_columnWeight="1"
            android:onClick="keyPress"
            android:text="Q" />
    
    
        <Button
            android:id="@+id/keyW"
            android:layout_width="0dp"
            android:layout_row="0"
            android:layout_column="2"
            android:layout_columnSpan="2"
            android:layout_columnWeight="1"
            android:onClick="keyPress"
            android:text="W" />
    
        <Button
            android:id="@+id/keyE"
            android:layout_width="0dp"
            android:layout_row="0"
            android:layout_column="4"
            android:layout_columnSpan="2"
            android:layout_columnWeight="1"
            android:onClick="keyPress"
            android:text="E" />
    
        <Button
            android:id="@+id/keyR"
            android:layout_width="0dp"
            android:layout_row="0"
            android:layout_column="6"
            android:layout_columnSpan="2"
            android:layout_columnWeight="1"
            android:onClick="keyPress"
            android:text="R" />
    
        <Button
            android:id="@+id/keyT"
            android:layout_width="0dp"
            android:layout_row="0"
            android:layout_column="8"
            android:layout_columnSpan="2"
            android:layout_columnWeight="1"
            android:onClick="keyPress"
            android:text="T" />
    
        <Button
            android:id="@+id/keyY"
            android:layout_width="0dp"
            android:layout_row="0"
            android:layout_column="10"
            android:layout_columnSpan="2"
            android:layout_columnWeight="1"
            android:onClick="keyPress"
            android:text="Y" />
    
        <Button
            android:id="@+id/keyU"
            android:layout_width="0dp"
            android:layout_row="0"
            android:layout_column="12"
            android:layout_columnSpan="2"
            android:layout_columnWeight="1"
            android:onClick="keyPress"
            android:text="U" />
    
        <Button
            android:id="@+id/keyI"
            android:layout_width="0dp"
            android:layout_row="0"
            android:layout_column="14"
            android:layout_columnSpan="2"
            android:layout_columnWeight="1"
            android:onClick="keyPress"
            android:text="I" />
    
        <Button
            android:id="@+id/keyO"
            android:layout_width="0dp"
            android:layout_row="0"
            android:layout_column="16"
            android:layout_columnSpan="2"
            android:layout_columnWeight="1"
            android:onClick="keyPress"
            android:text="O" />
    
        <Button
            android:id="@+id/keyP"
            android:layout_width="0dp"
            android:layout_row="0"
            android:layout_column="18"
            android:layout_columnSpan="2"
            android:layout_columnWeight="1"
            android:onClick="keyPress"
            android:text="P" />
    
    
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_row="1"
    
            android:layout_column="1"
            android:layout_columnSpan="19"
            android:layout_columnWeight="1"
            android:orientation="horizontal">
    
            <Button
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="0.4"
                android:visibility="invisible" />
    
    
            <Button
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1" />
    
            <Button
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1" />
    
            <Button
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1" />
    
            <Button
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1" />
    
            <Button
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1" />
    
            <Button
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1" />
    
            <Button
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1" />
    
            <Button
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1" />
    
            <Button
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="0.4"
                android:visibility="invisible" />
    
    
        </LinearLayout>
    
        <Button
            android:id="@+id/keyCaps"
            android:layout_width="0dp"
            android:layout_row="2"
            android:layout_column="0"
            android:layout_columnSpan="2"
            android:layout_columnWeight="1"
            android:onClick="keyPress"
            android:text="?" />
    
        <Button
            android:id="@+id/keyZ"
            android:layout_width="0dp"
            android:layout_row="2"
            android:layout_column="2"
            android:layout_columnSpan="2"
            android:layout_columnWeight="1"
            android:onClick="keyPress"
            android:text="Z" />
    
        <Button
            android:id="@+id/keyX"
            android:layout_width="0dp"
            android:layout_row="2"
            android:layout_column="4"
            android:layout_columnSpan="2"
            android:layout_columnWeight="1"
            android:onClick="keyPress"
            android:text="X" />
    
        <Button
            android:id="@+id/keyC"
            android:layout_width="0dp"
            android:layout_row="2"
            android:layout_column="6"
            android:layout_columnSpan="2"
            android:layout_columnWeight="1"
            android:onClick="keyPress"
            android:text="C" />
    
        <Button
            android:id="@+id/keyV"
            android:layout_width="0dp"
            android:layout_row="2"
            android:layout_column="8"
            android:layout_columnSpan="2"
            android:layout_columnWeight="1"
            android:onClick="keyPress"
            android:text="V" />
    
        <Button
            android:id="@+id/keyB"
            android:layout_width="0dp"
            android:layout_row="2"
            android:layout_column="10"
            android:layout_columnSpan="2"
            android:layout_columnWeight="1"
            android:onClick="keyPress"
            android:text="B" />
    
        <Button
            android:id="@+id/keyN"
            android:layout_width="0dp"
            android:layout_row="2"
            android:layout_column="12"
            android:layout_columnSpan="2"
            android:layout_columnWeight="1"
            android:onClick="keyPress"
            android:text="N" />
    
        <Button
            android:id="@+id/keyM"
            android:layout_width="0dp"
            android:layout_row="2"
            android:layout_column="14"
            android:layout_columnSpan="2"
            android:layout_columnWeight="1"
            android:onClick="keyPress"
            android:text="M" />
    
        <Button
            android:id="@+id/keyDelete"
            android:layout_width="0dp"
            android:layout_row="2"
            android:layout_column="16"
            android:layout_columnSpan="4"
            android:layout_columnWeight="1"
            android:onClick="keyPress"
            android:text="◀️" />
    
        <Button
            android:id="@+id/keyColon"
            android:layout_width="0dp"
            android:layout_row="3"
            android:layout_column="1"
            android:layout_columnSpan="3"
            android:layout_columnWeight="1"
            android:onClick="keyPress"
            android:text=":" />
    
        <Button
            android:id="@+id/keySpace"
            android:layout_width="0dp"
            android:layout_row="3"
            android:layout_column="4"
            android:layout_columnSpan="12"
            android:layout_columnWeight="1"
            android:onClick="keyPress"
            android:text="" />
    
        <Button
            android:id="@+id/keyPeriod"
            android:layout_width="0dp"
            android:layout_row="3"
            android:layout_column="16"
            android:layout_columnSpan="3"
            android:layout_columnWeight="1"
            android:onClick="keyPress"
            android:text="." />
    
    </GridLayout>
    

    【讨论】:

    • 这是一个解决方案,但是对于不同的显示尺寸,这不会改变吗?而且行永远不会居中,它总是会以特定的方式倾斜。
    • 非常感谢。我应该早点去 Stack Overflow。我度过了一整天,而你高贵的灵魂让我又度过了美好的一天,免于被毁。谢谢!
    猜你喜欢
    • 2017-11-28
    • 1970-01-01
    • 2019-02-04
    • 2021-10-23
    • 2020-03-11
    • 2014-04-28
    • 1970-01-01
    • 2017-11-04
    • 2014-12-27
    相关资源
    最近更新 更多