我正在尝试构建一个闹钟应用程序,但是我在设计布局时遇到了麻烦。
我想在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>
修改
答案 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>
android:layout_weight="0.20"
(20%)android:layout_weight="0.60"
(60%)android:layout_weight="0.20"
(20%)总计:100%
如果您放置weight tag
,则必须将height or width
设置为0dp
(取决于您的布局是垂直还是水平)。
然后,如果你想把你的按钮放在切换按钮的正下方,你只需要放大最后一部分,即放大按钮布局并减少第二部分,总共100%。
例如,您可以证明:
android:layout_weight="0.20"
(20%)android:layout_weight="0.20"
(20%)android:layout_weight="0.60"
(60%)您可以使用带有重量标记的FrameLayout
来放置“隐身”布局。
答案 1 :(得分:1)
包含RelativeLayout
的{{1}}的高度必须为ToggleButton
。并且您不能将wrap_content
和layout_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
进行对齐