Я использовал подход, отличный от изложенного здесь, и он работает очень хорошо, поэтому я хотел им поделиться.
Я использую стиль для создания настраиваемой кнопки с изображением слева и текстом в правом центре. Просто выполните 4 "простых шага" ниже:
I. Создайте свои 9 патчей, используя как минимум 3 разных файла PNG и имеющийся у вас инструмент: /YOUR_OWN_PATH/android-sdk-mac_x86/tools/./draw9patch. После этого у вас должно быть:
button_normal.9.png, button_focused.9.png и button_pressed.9.png
Затем загрузите или создайте значок PNG 24x24.
ic_your_icon.png
Сохраните все в папке drawable / вашего проекта Android.
II. Создайте XML-файл с именем button_selector.xml в своем проекте в папке drawable /. Состояния должны быть такими:
<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. Перейдите в папку values / и откройте или создайте файл styles.xml и создайте следующий 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 является «дочерним стилем», поскольку он расширяет ButtonNormalText («родительский стиль»).
Обратите внимание, что изменив drawableLeft в стиле ButtonNormalTextWithIcon на drawableRight, drawableTop или drawableBottom, вы можете разместить значок в другом месте относительно текста.
IV. Перейдите в папку / макет, где у вас есть XML для пользовательского интерфейса, и перейдите к кнопке, к которой вы хотите применить стиль, и сделать его таким:
<Button android:id="@+id/buttonSubmit"
android:text="@string/button_submit"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
style="@style/ButtonNormalTextWithIcon" ></Button>
И ... вуаля! У вас есть кнопка с изображением слева.
Для меня это лучший способ сделать это! потому что, делая это таким образом, вы можете управлять размером текста кнопки отдельно от значка, который хотите отобразить, и использовать один и тот же фон, который можно рисовать для нескольких кнопок с разными значками, в соответствии с рекомендациями по пользовательскому интерфейсу Android с использованием стилей.
Вы также можете создать тему для своего приложения и добавить к нему «родительский стиль», чтобы все кнопки выглядели одинаково, и применить «дочерний стиль» со значком только там, где он вам нужен.
person
Oscar Salguero
schedule
15.09.2011
CardView
›› Просто поместитеLinearLayout
внутрьCardView
, установитеimage
в качестве фона дляLinearLayout
и используйтеtextView
внутри в этомLinearLayout
. Для получения дополнительных сведений ознакомьтесь с этим ›stackoverflow.com/a/65172123/12750160. Спасибо, удачного кодирования :) - person AG-Developer   schedule 06.12.2020