设计布局时遇到了麻烦

时间:2016-03-14 15:14:37

标签: android button layout

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

我想在button下方添加toggle 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>

修改

enter image description here

4 个答案:

答案 0 :(得分:2)

尝试使用此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像百分之一的最佳解决方案,也就是说,你可以将你的布局分成几部分(权重用%),在我的例子中,你可以看到三个部分: / p>

  1. android:layout_weight="0.20"(20%)
  2. android:layout_weight="0.60"(60%)
  3. android:layout_weight="0.20"(20%)
  4. 总计: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%)
    4. 您可以使用带有重量标记的FrameLayout来放置“隐身”布局。

答案 1 :(得分:1)

包含RelativeLayout的{​​{1}}的高度必须为ToggleButton。并且您不能将wrap_contentlayout_centerVertical属性与layout_centerHorizontal一起使用。

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

LinearLayout

答案 2 :(得分:1)

使用布局

<?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 :(得分:1)

我想到线性布局。 使用Linear Layout代替Relative Layout 您可以使用Layout:weight进行对齐