Android では、他のビューを含むボタンを作成したいと考えています。たとえば、次のようなものです。
+---------------------------+
| Hello world! +-------+ |
| | image | |
| Some more info +-------+ |
+---------------------------+
しかし、この特定の例よりも柔軟にしたいと思います。理想的には、別の XML ファイルでレイアウトを実装できるように、ボタンに ViewGroup を単純に含めることができるようにします。ただし、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
結果は白になります...