Центрировать текст внутри кнопки и уменьшить отступы кнопок - PullRequest
1 голос
/ 06 февраля 2020

pic

Моя кнопка "ДОБАВЛЕНА", и, как вы можете видеть, текст не помещается внутри и обрезается по нижней части, я думаю, что белый пространство вокруг текста внутри кнопки слишком велико, и поэтому я не могу его уместить. Я не хочу уменьшать его размер ..

Моя кнопка в xml:

<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_marginTop="10dp"
    android:layout_width="match_parent"
    android:layout_height="40dp"
    >

    <TextView
        android:id="@+id/exp_routine"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_marginStart="20dp"
        android:layout_marginEnd="20dp"
        android:alpha="1"
        android:gravity="center"
        android:text="Routine"
        android:textAllCaps="true"
        android:textColor="#686868"
        android:textSize="16sp"
        android:textStyle="bold"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />




    <Button
        android:id="@+id/btn_add"
        style="@style/Widget.MaterialComponents.Button.TextButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_centerVertical="true"
        android:gravity="center"
        android:minWidth="0dp"
        android:minHeight="0dp"
        android:stateListAnimator="@null"
        android:text="add"
        android:textSize="20sp"
        android:includeFontPadding="false"
        android:textAlignment="gravity"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toEndOf="@+id/exp_routine"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

Ответы [ 3 ]

2 голосов
/ 06 февраля 2020

Помимо

android:minWidth="0dp"
android:minHeight="0dp"

вам нужно установить includeFontPadding на false и padding на 0dp, чтобы вы могли создать новый стиль и использовать его как

 <style name="NoPaddingTextButton" parent="Widget.MaterialComponents.Button.TextButton">
        <item name="android:padding">0dp</item>
        <item name="android:includeFontPadding">false</item>
 </style> 

и используйте его

 <Button
        android:id="@+id/btn_add"
        style="@style/NoPaddingTextButton"
        ...
 />

Примечание. Вы можете по-прежнему видеть дополнительный отступ сверху и снизу, но для таких символов, как p или ' et c, вы можете проверить это с помощью

    android:text="ADD p '`"
1 голос
/ 06 февраля 2020

Я пытаюсь изменить ваш макет, и этот работает для меня. Я добавил отступ вручную и удалил этот стиль = "@ style / Widget.MaterialComponents.Button.TextButton". Пожалуйста, опубликуйте этот код стиля, если этот ответ не сработает.

<androidx.constraintlayout.widget.ConstraintLayout android:layout_marginTop="10dp"
android:layout_width="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

    <TextView
        android:id="@+id/exp_routine"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_marginStart="20dp"
        android:layout_marginEnd="20dp"
        android:alpha="1"
        android:text="Routine"
        android:textAllCaps="true"
        android:textColor="#686868"
        android:textSize="16sp"
        android:textStyle="bold"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />




    <Button
        android:id="@+id/btn_add"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:minWidth="0dp"
        android:background="@android:color/background_dark"
        android:minHeight="0dp"
        android:textColor="@color/colorAccent"
        android:text="add"
        android:textSize="20sp"
        android:padding="10dp"
        app:layout_constraintBottom_toBottomOf="@+id/exp_routine"
        app:layout_constraintStart_toEndOf="@+id/exp_routine"
        app:layout_constraintTop_toTopOf="@+id/exp_routine" />
</androidx.constraintlayout.widget.ConstraintLayout>
1 голос
/ 06 февраля 2020

В коде ваша ConstraintLayout высота предопределена android:layout_height="40dp" это то, что вызывает отсечение, поскольку высота кнопки больше.

Измените на android:layout_height="wrap_content", если подходит, или даже android:layout_height="match_parent" будет работа в случае его root макет

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