在 Android 上,我想创建一个包含其他视图的按钮。例如,像这样:
+---------------------------+
| Hello world! +-------+ |
| | image | |
| Some more info +-------+ |
+---------------------------+
但我希望它比这个特定示例更灵活。理想情况下,按钮可以简单地包含一个 ViewGroup,这样我就可以在一个单独的 XML 文件中实现它的布局。但是,由于 Button 扩展了 View,而不是 ViewGroup,这似乎是不可能的。
有什么方法可以使用标准的 Android 组件来实现这一点,还是我必须求助于编写自定义按钮类?
根据要求,一些可以解决问题的示例 XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:focusable="true"
android:clickable="true"
android:background="@android:drawable/btn_default">
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@android:color/primary_text_light"/>
<TextView
android:id="@+id/additional_line_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@android:color/primary_text_light"/>
<TextView
android:id="@+id/additional_line_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@android:color/primary_text_light"/>
</LinearLayout>
我必须明确设置 TextViews 的颜色,否则它们将几乎不可读(默认情况下它们是白色的)。我从 SDK 中挖出了标识符:.../platforms/android-7/data/res/values/public.xml
. 奇怪的是,primary_text_light
给出黑色文本,而primary_text_dark
结果是白色......