ImageButton
があり、その上にテキストと画像を表示したいです。しかし、エミュレータを試してみると:
<ImageButton
Android:text="OK"
Android:id="@+id/buttonok"
Android:src="@drawable/buttonok"
Android:layout_width="match_parent"
Android:layout_height="wrap_content" />
画像は取得できますが、テキストは表示されません。テキストを表示するにはどうすればよいですか?私を助けてください!
Android:text
を使用できないので、通常のボタンを使用し、複合ドロウアブルの1つを使用することをお勧めします。例えば:
<Button
Android:id="@+id/buttonok"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:drawableLeft="@drawable/buttonok"
Android:text="OK"/>
drawableTop
、drawableBottom
、drawableLeft
、またはdrawableRight
を使用して、好きな場所にドロアブルを配置できます。
UPDATE
ボタンの場合、これも非常にうまく機能します。 Android:background
を置くことは問題ありません!
<Button
Android:id="@+id/fragment_left_menu_login"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:background="@drawable/button_bg"
Android:text="@string/login_string" />
この問題が発生したばかりで、完璧に機能しています。
本当にやりたいのであれば、ImageButton
にキャプションを付けることは技術的に可能です。 TextView
を使用してImageButton
の上にFrameLayout
を置くだけです。 Textview
をクリックできないようにしてください。
例:
<FrameLayout>
<ImageButton
Android:id="@+id/button_x"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:background="@null"
Android:scaleType="fitXY"
Android:src="@drawable/button_graphic" >
</ImageButton>
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:clickable="false"
Android:text="TEST TEST" >
</TextView>
</FrameLayout>
LinearLayout
を使用する代わりにButton
を使用できます。これはアプリで使用した配置です
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_margin="20dp"
Android:background="@color/mainColor"
Android:orientation="horizontal"
Android:padding="10dp">
<ImageView
Android:layout_width="50dp"
Android:layout_height="50dp"
Android:background="@drawable/ic_cv"
Android:textColor="@color/offBack"
Android:textSize="20dp" />
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_margin="10dp"
Android:text="@string/cartyCv"
Android:textColor="@color/offBack"
Android:textSize="25dp" />
</LinearLayout>
実際、Android:text
はImageButton
で受け入れられる引数ではありませんが、指定された背景(Androidデフォルトではない)でボタンを取得しようとしている場合は、Android:background
xml属性を使用するか、.setBackground();
でクラスから宣言します
みんな設定とログアウトボタンを開発する必要があるので、以下のコードを使用しました。
<Button
Android:id="@+id/imageViewLogout"
Android:layout_width="100dp"
Android:layout_height="wrap_content"
Android:layout_margin="@dimen/size_30dp"
Android:layout_alignParentLeft="true"
Android:text="Settings"
Android:drawablePadding="10dp"
Android:background="@Android:color/transparent"
Android:layout_alignParentBottom="true"
Android:drawableTop="@drawable/logout" />
ImageButton
とTextView
を垂直方向のLinearLayout
内に配置することでこれを解決しました。よく働く!
<LinearLayout
Android:id="@+id/linLayout"
Android:layout_width="80dp"
Android:layout_height="wrap_content"
Android:orientation="vertical" >
<ImageButton
Android:id="@+id/camera_ibtn"
Android:layout_width="60dp"
Android:layout_height="60dp"
Android:layout_gravity="center"
Android:background="@drawable/camera" />
<TextView
Android:id="@+id/textView2"
Android:layout_width="80dp"
Android:layout_height="wrap_content"
Android:gravity="center"
Android:text="@string/take_pic"
Android:textColor="#FFFFFF"
Android:textStyle="bold" />
</LinearLayout>
代わりに、通常のButton
とAndroid:drawableTop属性(または左、右、下)を使用できます。
最良の方法:
<Button
Android:text="OK"
Android:id="@+id/buttonok"
Android:background="@drawable/buttonok"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"/>
ナイスサークルの例を次に示します。
drawable/circle.xml
:
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="oval">
<solid
Android:color="#ff87cefa"/>
<size
Android:width="60dp"
Android:height="60dp"/>
</shape>
次に、xmlファイルのボタン:
<Button
Android:id="@+id/btn_send"
Android:layout_width="60dp"
Android:layout_height="60dp"
Android:background="@drawable/circle"
Android:text="OK"/>
ImageButton
にtext
を含めることはできません(または、少なくとも、Android:text
がその属性にリストされていません)。
トリックは次のとおりです。
Button
を使用する必要があるようです(drawableTop
またはsetCompoundDrawablesWithIntrinsicBounds(int,int,int,int))
を見てください)。