テキストの背景に画像を設定し、テキストの左側にアイコンを設定したいと思います。iPhone では非常に簡単ですが、Android ではボタンのサイズを変更し、アイコン + テキストの位置と距離を適切に維持する方法がわかりません。
iPhone:
アンドロイド私はこれを持っています:
xml コードは次のとおりです。
<Button
android:id="@+id/btSettings"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@id/tvWhatever"
android:layout_centerHorizontal="true"
android:layout_marginBottom="20dp"
android:background="@drawable/bt_general"
android:drawableTop="@drawable/settings_selected"
android:text="@string/settings"
android:textColor="#000000" />
ここからコードを取得しました。
を使用するandroid:drawableLeft
と、アイコンが一番左に移動します。
セミハードコーディングされたパディングで遊んでみると、差分デバイスの外観が異なります: ( phone と table )
を追加すると、次のandroid:gravity="left|center_vertical"
ようになります。
テキストは可変です。ユーザーが言語を変更すると、テキストが変更されます。
適切に行う方法は?
誰の答えにも反対票を投じたくはありませんが、質問を読んで、私がすでに試したことを提案しないでください。また、ハードコーディングされた修正がうまく機能しないことも伝えました。
これは宿題ではなく、商用ソフトウェアの一部です。
回答からの推奨コードは次のとおりです。
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/bt_general"
android:padding="20dip" >
<ImageView
android:id="@+id/xIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginLeft="10dip"
android:src="@drawable/settings_selected" />
<TextView
android:id="@+id/xSettingsTxt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="@string/settings"
android:textColor="#000000" />
</RelativeLayout>
android:layout_marginLeft="10dip"
Galaxy s4ではどのように見えると思いますか? プレビューは次のとおりです。
これは、私が尋ねたものではありません。「dip」、「dp」、または「px」は、左、上からの距離として使用しないでください。電話には HPDI があり、画面が小さく、タブレットには MDPI と広い解像度があるためです。Simple は mdpi と xxhdpi では動作しません。
Nizamの回答は、良い解決策に非常に近いです: