如何创建包含多个视图的Button?

Tho*_*mas 7 android view button viewgroup

在Android上,我想创建一个包含其他一些视图的按钮.例如,像这样:

+---------------------------+
| Hello world!    +-------+ |
|                 | image | |
| Some more info  +-------+ |
+---------------------------+
Run Code Online (Sandbox Code Playgroud)

但我希望它比这个具体的例子更灵活.理想情况下,按钮只能包含一个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>
Run Code Online (Sandbox Code Playgroud)

我必须明确地在TextViews上设置颜色,否则它们几乎不可读(默认情况下它们是白色的).我从SDK中挖出了标识符:.../platforms/android-7/data/res/values/public.xml.奇怪的是,primary_text_light给出了黑色文本,而primary_text_dark结果是白色......

ogn*_*ian 4

创建所需按钮的布局,并将其设置android:background@android:drawable/btn_defaultclickable创建包含其余部分的最外层视图,focusable然后就完成了。

  • @WarrenFaith:这种事情效果很好。我使用了`android:background="@android:drawable/edit_text"`设置为`Button`,使其看起来像`EditText`。(避免使用日期选择器进行日期验证:)) (2认同)