【问题标题】:Got troubles with designing a layout在设计布局时遇到了麻烦
【发布时间】:2016-06-29 17:06:42
【问题描述】:

我正在尝试构建一个闹钟应用程序,但是在设计布局时遇到了麻烦。

我想在toggle button 下方添加一个button,但该按钮未显示。

<?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">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Alarm"
        android:paddingTop="10dp"
        android:paddingLeft="10dp"
        android:id="@+id/textView" />

    <TimePicker
        android:id="@+id/timePicker"
        android:layout_centerHorizontal="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <View android:layout_marginLeft="10dp" android:layout_width="340sp" android:layout_height="2dp" android:background="#c0c0c0" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Repeat"
        android:paddingTop="20dp"
        android:paddingLeft="10dp"
        android:id="@+id/textView2" />

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:paddingBottom="10dp"
        android:layout_marginTop="10dp"
        android:layout_height="fill_parent"
        android:orientation="horizontal">

        <ToggleButton

            android:layout_marginLeft="20dp"
            android:layout_width="55sp"
            android:layout_height="wrap_content"
            android:textOn="@string/Sun"
            android:textOff="@string/Sun"
            android:checked="false"
            android:id="@+id/toggleSun" />

        <ToggleButton
            android:layout_marginLeft="-10dp"
            android:layout_width="57sp"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/toggleSun"
            android:layout_toEndOf="@id/toggleSun"
            android:textOn="@string/Mon"
            android:textOff="@string/Mon"
            android:id="@+id/toggleMon"
            android:checked="false" />

        <ToggleButton
            android:layout_marginLeft="-10dp"
            android:layout_width="55sp"
            android:layout_height="wrap_content"
            android:textOn="@string/Tue"
            android:layout_toRightOf="@id/toggleMon"
            android:layout_toEndOf="@id/toggleMon"
            android:textOff="@string/Tue"
            android:id="@+id/toggleTue"
            android:checked="false" />

        <ToggleButton
            android:layout_marginLeft="-10dp"
            android:layout_width="55sp"
            android:layout_height="wrap_content"
            android:textOn="@string/Wed"
            android:layout_toRightOf="@id/toggleTue"
            android:layout_toEndOf="@id/toggleTue"
            android:textOff="@string/Wed"
            android:id="@+id/toggleWed"
            android:checked="false" />

        <ToggleButton
            android:layout_marginLeft="-10dp"
            android:layout_width="55sp"
            android:layout_height="wrap_content"
            android:textOn="@string/Thu"
            android:textOff="@string/Thu"
            android:layout_toRightOf="@id/toggleWed"
            android:layout_toEndOf="@id/toggleWed"
            android:id="@+id/toggleThurs"
            android:checked="false" />

        <ToggleButton
            android:layout_marginLeft="-10dp"
            android:layout_width="55sp"
            android:layout_height="wrap_content"
            android:textOn="@string/Fri"
            android:layout_toRightOf="@id/toggleThurs"
            android:layout_toEndOf="@id/toggleThurs"
            android:textOff="@string/Fri"
            android:id="@+id/toggleFri"
            android:checked="false" />

        <ToggleButton
            android:layout_marginLeft="-10dp"
            android:layout_width="55sp"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/toggleFri"
            android:layout_toEndOf="@id/toggleFri"
            android:textOn="@string/Sat"
            android:textOff="@string/Sat"
            android:id="@+id/toggleSat"
            android:checked="false" />

    </RelativeLayout>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="30dp"
        android:text="New Button"
        android:id="@+id/button"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />


</LinearLayout>

编辑

【问题讨论】:

    标签: android button layout


    【解决方案1】:

    试试这个 XML 文件:

    <?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:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="0.20">
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:text="Alarm"
                android:paddingTop="10dp"
                android:paddingLeft="10dp"
                android:id="@+id/textView" />
    
            <TimePicker
                android:id="@+id/timePicker"
                android:layout_centerHorizontal="true"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
    
            <View android:layout_marginLeft="10dp" android:layout_width="340sp" android:layout_height="2dp" android:background="#c0c0c0" />
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:text="Repeat"
                android:paddingTop="20dp"
                android:paddingLeft="10dp"
                android:id="@+id/textView2" />
        </LinearLayout>
    
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="0.60">
    
            <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                                android:layout_width="fill_parent"
                                android:paddingBottom="10dp"
                                android:layout_marginTop="10dp"
                                android:layout_height="fill_parent"
                                android:orientation="horizontal">
    
                <ToggleButton
    
                    android:layout_marginLeft="20dp"
                    android:layout_width="55sp"
                    android:layout_height="wrap_content"
                    android:textOn="@string/Sun"
                    android:textOff="@string/Sun"
                    android:checked="false"
                    android:id="@+id/toggleSun" />
    
                <ToggleButton
                    android:layout_marginLeft="-10dp"
                    android:layout_width="57sp"
                    android:layout_height="wrap_content"
                    android:layout_toRightOf="@id/toggleSun"
                    android:layout_toEndOf="@id/toggleSun"
                    android:textOn="@string/Mon"
                    android:textOff="@string/Mon"
                    android:id="@+id/toggleMon"
                    android:checked="false" />
    
                <ToggleButton
                    android:layout_marginLeft="-10dp"
                    android:layout_width="55sp"
                    android:layout_height="wrap_content"
                    android:textOn="@string/Tue"
                    android:layout_toRightOf="@id/toggleMon"
                    android:layout_toEndOf="@id/toggleMon"
                    android:textOff="@string/Tue"
                    android:id="@+id/toggleTue"
                    android:checked="false" />
    
                <ToggleButton
                    android:layout_marginLeft="-10dp"
                    android:layout_width="55sp"
                    android:layout_height="wrap_content"
                    android:textOn="@string/Wed"
                    android:layout_toRightOf="@id/toggleTue"
                    android:layout_toEndOf="@id/toggleTue"
                    android:textOff="@string/Wed"
                    android:id="@+id/toggleWed"
                    android:checked="false" />
    
                <ToggleButton
                    android:layout_marginLeft="-10dp"
                    android:layout_width="55sp"
                    android:layout_height="wrap_content"
                    android:textOn="@string/Thu"
                    android:textOff="@string/Thu"
                    android:layout_toRightOf="@id/toggleWed"
                    android:layout_toEndOf="@id/toggleWed"
                    android:id="@+id/toggleThurs"
                    android:checked="false" />
    
                <ToggleButton
                    android:layout_marginLeft="-10dp"
                    android:layout_width="55sp"
                    android:layout_height="wrap_content"
                    android:textOn="@string/Fri"
                    android:layout_toRightOf="@id/toggleThurs"
                    android:layout_toEndOf="@id/toggleThurs"
                    android:textOff="@string/Fri"
                    android:id="@+id/toggleFri"
                    android:checked="false" />
    
                <ToggleButton
                    android:layout_marginLeft="-10dp"
                    android:layout_width="55sp"
                    android:layout_height="wrap_content"
                    android:layout_toRightOf="@id/toggleFri"
                    android:layout_toEndOf="@id/toggleFri"
                    android:textOn="@string/Sat"
                    android:textOff="@string/Sat"
                    android:id="@+id/toggleSat"
                    android:checked="false" />
    
            </RelativeLayout>
        </LinearLayout>
    
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="0.20">
    
            <Button
                android:layout_width="wrap_content"
                android:layout_height="50dp"
                android:text="New Button"
                android:id="@+id/button"
                android:layout_centerVertical="true"
                android:layout_centerHorizontal="true" />
        </LinearLayout>
    
    
    </LinearLayout>
    

    编辑:

    嗯...最好的解决方案是使用weight 就像百分比一样,也就是说,您可以将布局分成几部分(重量使用 %),在我的示例中,您可以看到三个部分:

    1. android:layout_weight="0.20" (20%)
    2. android:layout_weight="0.60" (60%)
    3. android:layout_weight="0.20" (20%)

    总计:100%

    如果您输入weight tag,则必须将您的height or width 放入0dp(取决于您的布局是垂直还是水平)。

    那么如果你想把你的按钮放在切换按钮的下面,你只需要放大最后一部分,即放大按钮布局,缩小第二个,总共100%。

    例如,你可以证明:

    1. android:layout_weight="0.20" (20%)
    2. android:layout_weight="0.20" (20%)
    3. android:layout_weight="0.60" (60%)

    您也可以使用带有权重标签的FrameLayout 来放置“隐形”布局。

    【讨论】:

    • 如何增加timePicker的高度?
    • 你可以在第一个LinearLayout中使用权重。
    • 如果我想把按钮放在切换按钮的正下方怎么办?
    • 准确地画出你需要的东西(使用油漆、photoshop、真纸......),用图像更新你的问题,我会为你提供解决方案,稍后我会向你解释你想知道就学吧。
    • 已编辑。非常感谢
    【解决方案2】:

    使用布局作为

    <?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"
        android:weightSum="5">
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="Alarm"
            android:paddingTop="10dp"
            android:paddingLeft="10dp"
            android:id="@+id/textView"
            android:layout_weight="1" />
    
        <TimePicker
            android:id="@+id/timePicker"
            android:layout_centerHorizontal="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1" />
    
        <View android:layout_marginLeft="10dp" android:layout_width="340sp" android:layout_height="2dp" android:background="#c0c0c0" />
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="Repeat"
            android:paddingTop="20dp"
            android:paddingLeft="10dp"
            android:id="@+id/textView2"
            android:layout_weight="1" />
    
        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:orientation="horizontal"
            android:paddingBottom="10dp" >
    
            <ToggleButton
    
                android:layout_marginLeft="20dp"
                android:layout_width="55sp"
                android:layout_height="wrap_content"
                android:textOn="@string/Sun"
                android:textOff="@string/Sun"
                android:checked="false"
                android:id="@+id/toggleSun" />
    
            <ToggleButton
                android:layout_marginLeft="-10dp"
                android:layout_width="57sp"
                android:layout_height="wrap_content"
                android:layout_toRightOf="@id/toggleSun"
                android:layout_toEndOf="@id/toggleSun"
                android:textOn="@string/Mon"
                android:textOff="@string/Mon"
                android:id="@+id/toggleMon"
                android:checked="false" />
    
            <ToggleButton
                android:layout_marginLeft="-10dp"
                android:layout_width="55sp"
                android:layout_height="wrap_content"
                android:textOn="@string/Tue"
                android:layout_toRightOf="@id/toggleMon"
                android:layout_toEndOf="@id/toggleMon"
                android:textOff="@string/Tue"
                android:id="@+id/toggleTue"
                android:checked="false" />
    
            <ToggleButton
                android:layout_marginLeft="-10dp"
                android:layout_width="55sp"
                android:layout_height="wrap_content"
                android:textOn="@string/Wed"
                android:layout_toRightOf="@id/toggleTue"
                android:layout_toEndOf="@id/toggleTue"
                android:textOff="@string/Wed"
                android:id="@+id/toggleWed"
                android:checked="false" />
    
            <ToggleButton
                android:layout_marginLeft="-10dp"
                android:layout_width="55sp"
                android:layout_height="wrap_content"
                android:textOn="@string/Thu"
                android:textOff="@string/Thu"
                android:layout_toRightOf="@id/toggleWed"
                android:layout_toEndOf="@id/toggleWed"
                android:id="@+id/toggleThurs"
                android:checked="false" />
    
            <ToggleButton
                android:layout_marginLeft="-10dp"
                android:layout_width="55sp"
                android:layout_height="wrap_content"
                android:textOn="@string/Fri"
                android:layout_toRightOf="@id/toggleThurs"
                android:layout_toEndOf="@id/toggleThurs"
                android:textOff="@string/Fri"
                android:id="@+id/toggleFri"
                android:checked="false" />
    
            <ToggleButton
                android:layout_marginLeft="-10dp"
                android:layout_width="55sp"
                android:layout_height="wrap_content"
                android:layout_toRightOf="@id/toggleFri"
                android:layout_toEndOf="@id/toggleFri"
                android:textOn="@string/Sat"
                android:textOff="@string/Sat"
                android:id="@+id/toggleSat"
                android:checked="false" />
    
        </RelativeLayout>
    
        <Button
            android:layout_width="wrap_content"
            android:layout_height="30dp"
            android:text="New Button"
            android:id="@+id/button"
            android:layout_centerVertical="true"
            android:layout_centerHorizontal="true"
            android:layout_weight="1" />
    
    
    </LinearLayout> 
    

    【讨论】:

      【解决方案3】:

      包含ToggleButtons 的RelativeLayout 的高度必须为wrap_content。并且您不能将layout_centerVerticallayout_centerHorizontal 属性与LinearLayout 一起使用。

      编辑:我建议使用这个,而不是你的 RelativeLayout。尽量避免使用数字。

      <LinearLayout
              android:layout_width="match_parent"
              android:layout_height="50dp"
              android:orientation="horizontal"
              android:layout_margin="2dp"
              android:weightSum="7">
      
              <ToggleButton
                  android:id="@+id/toggleSun"
                  android:layout_width="0dp"
                  android:layout_height="match_parent"
                  android:layout_weight="1"
                  android:checked="false"
                  android:maxLines="1"
                  android:textOff="Sun"
                  android:textOn="Sun" />
      
              <ToggleButton
                  android:id="@+id/toggleMon"
                  android:layout_width="0dp"
                  android:layout_height="match_parent"
                  android:layout_weight="1"
                  android:checked="false"
                  android:maxLines="1"
                  android:textOff="Mon"
                  android:textOn="Mon" />
      
              <ToggleButton
                  android:id="@+id/toggleTue"
                  android:layout_width="0dp"
                  android:layout_height="match_parent"
                  android:layout_weight="1"
                  android:checked="false"
                  android:maxLines="1"
                  android:textOff="Tue"
                  android:textOn="Tue" />
      
              <ToggleButton
                  android:id="@+id/toggleWed"
                  android:layout_width="0dp"
                  android:layout_height="match_parent"
                  android:layout_weight="1"
                  android:checked="false"
                  android:maxLines="1"
                  android:textOff="Wed"
                  android:textOn="Wed" />
      
              <ToggleButton
                  android:id="@+id/toggleThurs"
                  android:layout_width="0dp"
                  android:layout_height="match_parent"
                  android:layout_weight="1"
                  android:checked="false"
                  android:maxLines="1"
                  android:textOff="Thu"
                  android:textOn="Thu" />
      
              <ToggleButton
                  android:id="@+id/toggleFri"
                  android:layout_width="0dp"
                  android:layout_height="match_parent"
                  android:layout_weight="1"
                  android:checked="false"
                  android:maxLines="1"
                  android:textOff="Fri"
                  android:textOn="Fri" />
      
              <ToggleButton
                  android:id="@+id/toggleSat"
                  android:layout_width="0dp"
                  android:layout_height="match_parent"
                  android:layout_weight="1"
                  android:checked="false"
                  android:textOff="Sat"
                  android:textOn="Sat" />
      
          </LinearLayout>
      

      【讨论】:

      • 如果您使用fill_parent 进行布局,它将使用该布局填充屏幕中的可用空间。 wrap_content 仅使用布局所需的空间。
      • 按钮怎么样?
      • 按钮也一样。您应该查看this 链接和this 链接以完全了解布局属性。
      【解决方案4】:

      我想到了线性布局。 使用 Linear Layout 而不是 Relative Layout 你可以使用Layout:weight进行对齐

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-02
        • 2013-11-11
        • 2011-08-28
        • 2022-01-05
        • 1970-01-01
        相关资源
        最近更新 更多