Как центрировать drawableTop и текст вертикально на Button в Android?
У меня есть кнопка, определяемая следующим образом:
<Button
android:drawableTop="@drawable/ico"
android:gravity="center"
android:id="@+id/StartButton2x2"
android:text="@string/Widget2x2StartBtnLabel"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="@drawable/widgetbtn_bg"
/>
Проблема заключается в том, что изображение 'drawableTop' выровнено по верхней границе представления Button. Я хотел бы сосредоточить его (вместе с текстовой меткой) вертикально на кнопке.
'android: gravity', похоже, работает только на текстовой метке. Это не влияет на позиционирование "drawableTop".
Я смог центрировать его вертикально, используя "android: paddingTop", но это не кажется хорошей идеей. Я думаю, что это не сработает должным образом при разном разрешении/размере экрана.
Ответы
Ответ 1
Новый ответ
По-видимому, я неправильно понял вопрос. Ответ заключается в использовании:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
style="@android:style/Widget.Button">
... и заключить внутри ImageView
и a TextView
.
Старый ответ
Вот мысль: оберните свою кнопку в FrameLayout. Soemthing like:
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:foreground="@drawable/ico"
android:foregroundGravity="center">
<Button
android:gravity="center_vertical"
android:id="@+id/StartButton2x2"
android:text="@string/Widget2x2StartBtnLabel"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="@drawable/widgetbtn_bg" />
</FrameLayout>
Btw, что с android:layout_width="0dip"
? Не кажется правильным.
Ответ 2
'android: gravity', похоже, работает только на текстовой метке. Это не влияет Позиционирование "drawableTop".
Правильно.
Мне удалось центрировать его по вертикали используя "android: paddingTop" - но это не кажется хорошей идеей. я предположим, что это не сработает должным образом различное разрешение/размер экрана.
Возможно, вы сможете решить эту проблему, используя ресурсы измерения.
Однако, кроме как через прописку, вы не можете "центрировать drawableTop и текст вертикально на кнопке". Выделяемая функция Button
не очень настраивается.
Ответ 3
Вы можете использовать textview со своим свойством.
<LinearLayout
style="@android:style/Widget.Button"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/.."
android:text="" />
</LinearLayout>
Ответ 4
<Button
android:id="@+id/....."
android:...............
.......................
android:gravity="center_horizontal"
/>
Я был в порядке с ним.
Ответ 5
Используйте android:drawableTop="@drawable/Icon"
вместо фона
Не забудьте изменить
android:layout_width="fill_parent"
android:layout_height="wrap_content"