我需要实现的目标: 在一个按钮上方,有两行文本和一条直线,始终显示。因此,在这种情况下,按照我的了解,不能在
Button
的属性中设置文本。因此,我使用TextView
和View
对齐到Button
的顶部来实现它。
问题: 我遇到了Android 5.0+的奇怪UI外观问题,即当启用Button
时,它会覆盖TextView
和View
,即使在RelativeLayout
xml文件中TextView
在Button
之前。(根据我的理解,这意味着TextView
应该在Button
的顶部)以下是我的xml代码:<RelativeLayout
android:id="@+id/rl_daily_check_in_button_container"
android:layout_width="140dp"
android:layout_height="140dp"
android:layout_marginBottom="4dp"
android:layout_centerHorizontal="true"
android:layout_above="@+id/textview_check_in_days_in_row">
<Button
android:id="@+id/button_daily_check_in"
android:layout_width="140dp"
android:layout_height="140dp"
android:background="@drawable/daily_checkin_button" />
<TextView
android:id="@+id/textview_check_in"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_above="@+id/view_line"
android:layout_marginBottom="4dp"
android:text="@string/title_not_yet_daily_check_in"
android:textColor="@color/text_gray"
android:textStyle="bold"
android:textSize="36sp" />
<View
android:id="@+id/view_line"
android:layout_width="94dp"
android:layout_height="1dp"
android:layout_centerHorizontal="true"
android:layout_above="@+id/textview_check_in_points"
android:layout_marginBottom="6dp"
android:background="@color/text_gray" />
<TextView
android:id="@+id/textview_check_in_points"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="32dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="@string/points_can_get_daily_check_in_placeholder"
android:textColor="@color/text_gray"
android:textSize="14sp" />
</RelativeLayout>
但是当应用程序在Android 5.0-(例如4.4.2)中时,UI正好符合我的期望。我尝试设置android:elevation="xxdp"
属性,直到我以编程方式设置了Button
的背景才成功。有人可以解释一下原因以及Andoird 5.0+如何呈现其UI吗?非常感谢!
Andoird 5.0+上的Button
:
Button
在 Android 5.0- 上: