Я хотел бы иметь изображение, установленное для фона, текст на нем и значок в левой части текста. Очень просто в iPhone, но не может понять, как это сделать на Android, чтобы изменить размер этой кнопки и сохранить значок + текстовое положение и расстояние должным образом.Фон Android + текст + значок для кнопки
iPhone:
Android У меня есть это:
код 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" />
Взял код из here.
Если я использую android:drawableLeft
, то значок будет отображаться в левой части.
Если я начну играть с полу закодированных отступов, чем у меня будет другой взгляд на дифф devives: (телефон и стол)
Если я добавляю 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 и широкие разрешения. Простой не работает на mdpi и xxhdpi.
Nizam answer очень близко к хорошему решению:
Вы пробовали, ** андроида: drawablePadding ** – Piyush
@PiyushGupta, которые нуждаются в измерении, не drwable: Вызванный: java.lang.UnsupportedOperationException: Не удается преобразовать измерения: тип = 0x3 –
@matheszabi Проверьте макет, который я вставляю в свою часть редактирования, которая будет работать. –