Przyjąłem inne podejście niż te tutaj wymienione i działa naprawdę dobrze, więc chciałem się tym podzielić.
Używam stylu, aby utworzyć niestandardowy przycisk z obrazem po lewej i tekstem w środkowej prawej części. Wystarczy wykonać 4 „proste kroki” poniżej:
I. Utwórz 9 łatek, używając co najmniej 3 różnych plików PNG i narzędzia, które masz na: /YOUR_OWN_PATH/android-sdk-mac_x86/tools/./draw9patch. Następnie powinieneś mieć:
button_normal.9.png, button_focused.9.png i button_pressed.9.png
Następnie pobierz lub utwórz ikonę PNG 24x24.
ic_your_icon.png
Zapisz wszystko w folderze drawable / w swoim projekcie na Androida.
II. Utwórz plik XML o nazwie button_selector.xml w swoim projekcie w folderze drawable /. Stany powinny wyglądać tak:
<item android:state_pressed="true" android:drawable="@drawable/button_pressed" />
<item android:state_focused="true" android:drawable="@drawable/button_focused" />
<item android:drawable="@drawable/button_normal" />
III. Przejdź do folderu wartości / i otwórz lub utwórz plik styles.xml i utwórz następujący kod XML:
<style name="ButtonNormalText" parent="@android:style/Widget.Button">
<item name="android:textColor" >@color/black</item>
<item name="android:textSize" >12dip</item>
<item name="android:textStyle" >bold</item>
<item name="android:height" >44dip</item>
<item name="android:background" >@drawable/button_selector</item>
<item name="android:focusable" >true</item>
<item name="android:clickable" >true</item>
</style>
<style name="ButtonNormalTextWithIcon" parent="ButtonNormalText">
<item name="android:drawableLeft" >@drawable/ic_your_icon</item>
</style>
ButtonNormalTextWithIcon jest „stylem potomnym”, ponieważ rozszerza ButtonNormalText („styl nadrzędny”).
Zauważ, że zmieniając drawableLeft w stylu ButtonNormalTextWithIcon, na drawableRight, drawableTop lub drawableBottom możesz umieścić ikonę w innym miejscu względem tekstu.
IV. Przejdź do układu / folderu, w którym masz swój XML dla interfejsu użytkownika i przejdź do przycisku, w którym chcesz zastosować styl i sprawić, aby wyglądał tak:
<Button android:id="@+id/buttonSubmit"
android:text="@string/button_submit"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
style="@style/ButtonNormalTextWithIcon" ></Button>
I ... voilà! Masz przycisk z obrazkiem po lewej stronie.
Dla mnie to lepszy sposób, aby to zrobić! ponieważ robiąc to w ten sposób, możesz zarządzać rozmiarem tekstu przycisku osobno od ikony, którą chcesz wyświetlić, i używać tego samego tła do rysowania dla kilku przycisków z różnymi ikonami zgodnymi ze wskazówkami interfejsu użytkownika Androida za pomocą stylów.
Możesz także utworzyć motyw dla swojej aplikacji i dodać do niego „styl nadrzędny”, aby wszystkie przyciski wyglądały tak samo, i zastosować „styl podrzędny” z ikoną tylko tam, gdzie jest to potrzebne.