Кнопка с изображением / текстом в центре фона - PullRequest
0 голосов
/ 29 октября 2018

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

Я использую следующее для фона:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:dither="true"
    android:shape="rectangle">

    <corners android:radius="120sp" />

    <solid android:color="#FF5F00" />

    <size
        android:width="120sp"
        android:height="36sp" />

</shape>

Следующие изображения:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24sp"
    android:height="24sp"
    android:viewportWidth="24"
    android:viewportHeight="24">
  <path
      android:pathData="M5,12L19,12"
      android:strokeLineJoin="round"
      android:strokeWidth="2"
      android:fillColor="#00000000"
      android:strokeColor="#FFFFFF"
      android:strokeLineCap="round"/>
  <path
      android:pathData="M12,5L12,19"
      android:strokeLineJoin="round"
      android:strokeWidth="2"
      android:fillColor="#00000000"
      android:strokeColor="#FFFFFF"
      android:strokeLineCap="round"/>
</vector>

И, наконец, кнопка:

    <Button android:layout_columnSpan="6" 
android:layout_gravity="center" android:drawableStart="@drawable/ic_plus_24px" 
android:text="Evaluer" 
android:id="@+id/doEvalQOL" android:background="@drawable/roundedyakabutton" android:textColor="#FFFFFF" 
android:gravity="center" 
android:textSize="12sp" 
fontPath="fonts/Ubuntu-Medium.ttf" />

Это дает мне это: enter image description here

Как только я удаляю фон, изображение и текст помещаются так, как я бы хотел, чтобы они были с фоном:

enter image description here

Что мне здесь не хватает? Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Вы можете использовать drawablePadding, paddingLeft и paddingRight, чтобы выровнять текст и его значок в центре кнопки. Я использовал приведенный ниже код и результат прикреплен в виде скриншота. Попробуй однажды надейся, что это тебе поможет.

    <Button
    android:id="@+id/doEvalQOL"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:background="@drawable/roundedyakabutton"
    android:drawableLeft="@drawable/ic_plus_24px"
    android:text="Evaluer"
    android:drawablePadding="2dip"
    android:gravity="center"
    android:paddingLeft="30dip"
    android:paddingRight="26dip"
    android:singleLine="true"
    android:textColor="#FFFFFF"
    android:textSize="12sp"
     />

Out put of above button

0 голосов
/ 29 октября 2018

Задача

Вы не можете установить gravity из drawableLeft в Button / TextView. Здесь вы установили гравитацию на кнопку, которая делает текст в центре, но изображение остается слева.

Решение

  • Используйте минус поля android:drawablePadding="-20sp" для drawableLeft.
  • Или не используйте ImageView и Button-перенос с родительским представлением (с фоном) вместо Button.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...