簡體   English   中英

我如何在下面創建一個帶有textview的按鈕網格

[英]How can i create a grid of buttons with a textview below

在此處輸入圖片說明

嗨,

我想創建一個屏幕(就像我在上面繪制的一樣)。 A,b,c,d,e,f,g和h是buttons ,p是EditText

現在我要做的是,當部署在更大或更小的屏幕上或旋轉時,將發生以下情況:

  • 元素“ p”保持相同的高度,但水平放置(變寬/變小)
  • 元素ah(按鈕)的大小均在水平和垂直方向上變化。 因此,當屏幕變寬兩倍時,按鈕變寬兩倍,而當屏幕變寬兩倍時,按鈕變高兩倍。

我已經能夠創建一行按鈕來水平調整大小(使用lineairlayoutandroid:layout_weight ,但是我沒有得到更多。

這是一個可行的解決方案:

根據需要設置EditText高度。

<LinearLayout
    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"
        android:orientation="horizontal" >

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1" />

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal" >

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1" />

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal" >

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1" />

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal" >

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1" />

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1" />
    </LinearLayout>

    <EditText
        android:layout_width="match_parent"
        android:layout_height="40dp" />

</LinearLayout>

試試看,希望它能起作用:

<?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:orientation="vertical" >

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

        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1" />

        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1" />
    </LinearLayout>

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

        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1" />

        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1" />
    </LinearLayout>

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

        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1" />

        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1" />
    </LinearLayout>

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

        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1" />

        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1" />
    </LinearLayout>

    <EditText
        android:layout_width="match_parent"
        android:layout_height="50dp" />

</LinearLayout>

一種快速的解決方案是利用嵌套的布局和嵌套的權重。 例如:

<LinearLayout
    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"
        android:orientation="horizontal" >

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1" />

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal" >

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1" />

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal" >

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1" />

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal" >

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1" />

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1" />
    </LinearLayout>

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</LinearLayout>

但是,不建議使用嵌套權重,因為它們的計算量很大。 另一種(高級)布局可以基於相對布局來代替嵌套的LinearLayout及其權重。 隱藏的中心組件用於將相對布局一分為二。 下面是一個示例:

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

       <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal" >

        <!--  Hidden center view used to split relative layout in half -->
        <View
            android:id="@+id/hiddenView1"  
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_centerInParent="true"/>
        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_toLeftOf="@id/hiddenView1" />

        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_toRightOf="@id/hiddenView1" />
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal" >
    <!--  Hidden center view used to split relative layout in half -->
        <View
            android:id="@+id/hiddenView2"  
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_centerInParent="true"/>
        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_toLeftOf="@id/hiddenView2" />

        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_toRightOf="@id/hiddenView2" />
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal" >
    <!--  Hidden center view used to split relative layout in half -->
        <View
            android:id="@+id/hiddenView3"  
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_centerInParent="true"/>
        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_toLeftOf="@id/hiddenView3" />

        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_toRightOf="@id/hiddenView3" />
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal" >
    <!--  Hidden center view used to split relative layout in half -->
        <View
            android:id="@+id/hiddenView4"  
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_centerInParent="true"/>
        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_toLeftOf="@id/hiddenView4" />

        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_toRightOf="@id/hiddenView4" />
    </RelativeLayout>

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</LinearLayout> 

使用RelativeLayout的解決方案的靈感來自DeeV在以下SO問題中的答案: 使兩個LinearLayouts擁有50%的屏幕,而無需使用layout_weight

如果要避免在展開布局時顯示軟鍵盤,可以對父級LinearLayout執行以下操作:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:focusableInTouchMode="true">
// try this
<?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:padding="5dp"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="vertical">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:text="a"
                android:layout_weight="1"/>
            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_marginLeft="5dp"
                android:text="b"
                android:layout_weight="1"/>
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_marginTop="5dp"
            android:layout_weight="1"
            android:layout_height="0dp">

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:text="c"
                android:layout_weight="1"/>
            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_marginLeft="5dp"
                android:text="d"
                android:layout_weight="1"/>
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_marginTop="5dp"
            android:layout_weight="1"
            android:layout_height="0dp">

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:text="e"
                android:layout_weight="1"/>
            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_marginLeft="5dp"
                android:text="f"
                android:layout_weight="1"/>
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_marginTop="5dp"
            android:layout_weight="1"
            android:layout_height="0dp">

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:text="g"
                android:layout_weight="1"/>
            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_marginLeft="5dp"
                android:text="h"
                android:layout_weight="1"/>
        </LinearLayout>
    </LinearLayout>

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:hint="p"/>
</LinearLayout>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM