在linearlayout中将七个按钮彼此相邻放置

时间:2016-11-04 20:39:09

标签: android android-linearlayout android-layout-weight

我有一个linearlayout里面有七个按钮。但是,按钮不会显示其文本,因为它们的放置方式错误。这就是为什么我为每个按钮将weightsum设置为7并将weight设置为1。部分工作,因为我在虚拟设备中得到了预期的结果。然而,当我在手机上安装应用程序时,按钮仍然互相隐藏。我该怎么办?

linearlayout xml:

    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:weightSum="7"
            android:id="@+id/linearLayout"
android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true" android:baselineAligned="false">
        <Button style="?android:attr/buttonStyleSmall" android:layout_width="0dp" android:layout_height="wrap_content"
                android:text="MON" android:id="@+id/mon" android:checked="false"
                android:singleLine="true" android:layout_weight="1"/>
        <Button style="?android:attr/buttonStyleSmall" android:layout_width="0dp" android:layout_height="wrap_content"
                android:text="TUE" android:id="@+id/tue" android:checked="false"
                android:singleLine="true" android:layout_weight="1"/>
        <Button style="?android:attr/buttonStyleSmall" android:layout_width="0dp" android:layout_height="wrap_content"
                android:text="WED" android:id="@+id/wed" android:checked="false"
                android:singleLine="true" android:layout_weight="1"/>
        <Button style="?android:attr/buttonStyleSmall" android:layout_width="0dp" android:layout_height="wrap_content"
                android:text="THU" android:id="@+id/thu" android:checked="false"
                android:singleLine="true" android:layout_weight="1"/>
        <Button style="?android:attr/buttonStyleSmall" android:layout_width="0dp"
                android:layout_height="wrap_content" android:text="FRI" android:id="@+id/fri"
                android:checked="false" android:singleLine="true" android:layout_weight="1"/>
        <Button style="?android:attr/buttonStyleSmall" android:layout_width="0dp"
                android:layout_height="wrap_content" android:text="SAT" android:id="@+id/sat"
                android:checked="false" android:singleLine="true" android:layout_weight="1"/>
        <Button style="?android:attr/buttonStyleSmall" android:layout_width="0dp"
                android:layout_height="wrap_content" android:text="SUN" android:id="@+id/sun"
                android:checked="false" android:singleLine="true" android:layout_weight="1"/>
    </LinearLayout>

虚拟设备分辨率(我得到预期结果):768x1280

真实设备分辨率(我遇到问题):480x854

屏幕截图: This is a screenshot of the result from the final accepted answer

3 个答案:

答案 0 :(得分:1)

请尝试此代码..希望这有效

<LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:weightSum="7">
            <Button
                android:id="@+id/bt1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="MON"
                android:weight="1"/>

            <Button
                android:id="@+id/bt2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="TUE"
                android:weight="1"/>
           <Button
                android:id="@+id/bt3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="WED"
                android:weight="1"/>
           <Button
                android:id="@+id/bt4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="THU"
                android:weight="1"/>
            <Button
                android:id="@+id/bt5"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="FRI"
                android:weight="1"/>
           <Button
                android:id="@+id/bt6"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="SAT"
                android:weight="1"/>
           <Button
                android:id="@+id/bt7"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="SUN"
                android:weight="1"/>

  </LinearLayout>

更新让我知道它是否有效

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

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

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

            <Button
                android:id="@+id/bt1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="MON"
                android:weight="1"/>

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

            <Button
                android:id="@+id/bt2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="TUE"
                android:weight="1"/>

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

            <Button
                android:id="@+id/bt3"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="WED"
                android:weight="1"/>

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

            <Button
                android:id="@+id/bt4"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="THU"
                android:weight="1"/>

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

            <Button
                android:id="@+id/bt5"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="FRI"
                android:weight="1"/>

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

            <Button
                android:id="@+id/bt6"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="SAT"
                android:weight="1"/>

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

            <Button
                android:id="@+id/bt7"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="SUN"
                android:weight="1"/>

        </LinearLayout>  

    </LinearLayout>

</LinearLayout>

答案 1 :(得分:0)

您可以尝试在LinearLayout中使用TableLayout。 该表将有一行但有七列。 通过这种方式,按钮也可以均匀分布。

 <TableLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:weightSum="7">

        <TableRow
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            <Button
                android:id="@+id/bt1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/bt1"/>

            <Button
              android:id="@+id/bt2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/bt2"/>
           <Button
              android:id="@+id/bt3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/bt3"/>
           <Button
              android:id="@+id/bt4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/bt4"/>
            <Button
              android:id="@+id/bt5"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/bt5"/>
           <Button
              android:id="@+id/bt6"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/bt6"/>
           <Button
              android:id="@+id/bt7"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/bt7"/>

        </TableRow>
  </TableLayout>

您还需要为每个按钮添加边距,以指定它们彼此之间的隔离程度。

答案 2 :(得分:0)

随着屏幕分辨率降低,按钮无法使文本处于正常大小。由于宽度由layout_weight参数设置,因此无法在有限空间内呈现文本。如果要查看文本,则需要缩小文本大小。如果您需要自动缩放文本大小,请查看此link

另一方面,您可能希望为较低分辨率的设备制作两行按钮。或者根据你想要达到的目标找到按钮的替代品。