В Android отключено вертикальное выравнивание текста - PullRequest
5 голосов
/ 18 мая 2011

У меня проблемы с выравниванием текста кнопки в моем приложении для Android. У меня есть кнопка, определенная в XML, как это:

<Button
        android:id="@+id/reportanissuebutton"
        android:layout_width="272sp"
        android:layout_height="32sp"
        android:text="@string/button_report_issue"
        android:textColor="#fff"
        android:textSize="18sp"
        android:gravity="center_vertical|center_horizontal"
        android:background="@xml/report_issue_button"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="40sp"/>

Результат таков:

button.jpg

Я ожидал, что текст будет отцентрирован как по вертикали, так и по горизонтали, как это происходит со всеми другими кнопками в моем приложении, но по какой-то причине с этой он немного смещен вниз. Я не могу понять, почему он это делает, поэтому любая помощь будет оценена.

Edit: Вот XML для фона кнопки:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners android:radius="6dp" />
    <stroke android:color="#c2c2c2" android:width="2dp" />
    <gradient 
        android:angle="90"
        android:startColor="#000"
        android:endColor="#919191"/>
</shape>

Ответы [ 8 ]

30 голосов
/ 23 октября 2012

Попробуйте это:

android:includeFontPadding="false"

Это помогло мне с подобной проблемой.

6 голосов
/ 13 апреля 2013

Если вы строите свой вид программно, используйте это:

button.setIncludeFontPadding(false);
2 голосов
/ 12 июня 2015

Это сработало для меня:

android:gravity="fill_vertical"

Надеюсь, это поможет!

2 голосов
/ 28 мая 2011

Попробуйте: размер dip на разных устройствах будет намного лучше, чем у sp, и объявление гравитации по умолчанию полностью центрировано.

<Button
    android:id="@+id/reportanissuebutton"
    android:layout_width="272dip"
    android:layout_height="32dip"
    android:text="@string/button_report_issue"
    android:textColor="#fff"
    android:textSize="18dip"
    android:background="@xml/report_issue_button"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="40sp"/>

Дополнительно: эта точная вещь произошла со мной, когда шрифт был слишком высоким дляButton Попробуйте немного уменьшить размер шрифта и / или увеличить высоту кнопки .... это решило мою проблему.

1 голос
/ 28 марта 2016

это сработало для меня:

android:layout_gravity="center_vertical"
0 голосов
/ 28 августа 2017

У меня была проблема с вертикальным выравниванием текста.
Оказалось, это произошло из-за увеличения вертикального межстрочного интервала (в родительском стиле кнопки) путем установки android:lineSpacingExtra.
Поэтому убедитесь, что он не указан или не установлен android:lineSpacingExtra="0dp" (на случай, если вам нужно переопределить родительский стиль).

0 голосов
/ 17 февраля 2016

S действительно полный ответ таков:

   <item name="android:includeFontPadding">false</item>
   <item name="android:paddingTop">0dp</item>
   <item name="android:paddingBottom">0dp</item>

.. в некоторых случаях, когда желаемая высота кнопки слишком мала по сравнению с размером шрифта.

0 голосов
/ 18 мая 2011

использование

android:layout_height="wrap_content"

Это определенно решит вашу проблему.

Если вы найдете это полезным, не забудьте пометить его как ответ.

С наилучшими пожеланиями,

~ Anup

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...