ボタンに(背景として)画像を表示し、実行時の状況に応じて、画像の上や上にテキストを動的に追加しようとしています。
ImageButtonを使うと、テキストを追加することさえできません。 ボタン
を使うと、テキストを追加できますが、android:drawableBottom
や、ここで定義されているような同様のXML属性を持つイメージを定義するだけです。
つまり、テキストの周りに画像を描くことはできますが、テキストの下や下には描けません(z軸はディスプレイの外に出るように定義されています)。
これを実現する方法について、何か提案はありますか?ひとつのアイデアは、Button
またはImageButton
を拡張して、draw()
メソッドをオーバーライドすることです。しかし、私の現在の知識レベルでは、この方法(2Dレンダリング)をどうすればいいのかよくわかりません。もしかしたら、もっと経験のある方が解決策を知っているかもしれませんし、少なくとも開始するためのヒントがあるかもしれません。
背景、アイコン画像、テキストを1つの ボタン
にまとめたい場合に使用します。ボタン`の背景、drawableTop/Bottom/Rigth/Left、padding属性に設定します。
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/home_btn_test"
android:drawableTop="@drawable/home_icon_test"
android:textColor="#FFFFFF"
android:id="@+id/ButtonTest"
android:paddingTop="32sp"
android:drawablePadding="-15sp"
android:text="this is text"></Button>
より洗練された配置にするには、RelativeLayout
を使用して、クリックできるようにすることもできます。
Tutorial: 両方のケースをカバーした素晴らしいチュートリアル: http://izvornikod.com/Blog/tabid/82/EntryId/8/Creating-Android-button-with-image-and-text-using-relative-layout.aspx
この問題には、もっと良い解決策があります。
通常の Button
を使い、drawableLeft
と gravity
属性を使用するだけです。
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/my_btn_icon"
android:gravity="left|center_vertical" />
このようにして、ボタンの左側にアイコンを表示し、アイコンの右側にテキストを表示するボタンが得られます縦方向に中央揃え。