Почему Android настаивает на том, чтобы раздавить мою кнопку?

#android #android-layout

#Android #android-макет

Вопрос:

У меня есть красивое, красивое изображение кнопки Facebook:

Моя обычная кнопка входа в Facebook

Но мой макет Android продолжает сжимать его:

введите описание изображения здесь

Может кто-нибудь, пожалуйста, помогите, вот посмотрите на мой файл макета:

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@ id/logo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@ id/tagline"
        android:layout_centerHorizontal="true"
        android:layout_margin="10dp"
        android:contentDescription="@string/app_description"
        android:src="@drawable/logo" />

    <TextView
        android:id="@id/tagline"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:gravity="center"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:text="@string/tagline"
        android:textSize="22sp" />

    <Button
        android:id="@ id/loginButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/tagline"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="50dp"
        android:background="@drawable/login_button_normal"
        android:text="@string/login"
        android:textStyle="bold" />

</RelativeLayout>
 

Комментарии:

1. 9-исправьте свое изображение, чтобы явно указать, какую часть вы разрешаете изменить (т. Е. Нет)

2. Является ли ваша кнопка патчем 9? если это так, то он действительно плохо разработан. Я имею в виду 9 маркеров, которые можно нарисовать.

3. @DerGolem это не патч 9

4. @IllegalArgument Но это выглядит так: он имеет черную рамку размером 1 пиксель со всех сторон. И это заставляет меня думать о патче 9 (плохо отмечен)

Ответ №1:

Вы используете a Button с текстом внутри. Свойство android:layout_width="wrap_content" применяется к ширине текста, а не к ширине вашего рисованного фона.

Вы можете либо:

  • Интегрируйте текст в свой файл .png.
  • Используйте 9-patch
  • Создайте рисованный прямоугольник с закругленными синими углами и создайте изображение только с белой буквой «f» с вертикальной линией. Затем вы можете использовать TextView с возможностью рисования внутри:
      <TextView
         ...
         android:text="Log in"
         android:drawableLeft="{Your image (white f)}"
         android:background="{Your drawable (blue background)}"
         ... />
     

Ответ №2:

Это потому, что вы устанавливаете фон для своей кнопки:

 android:background="@drawable/login_button_normal"
 

android: background не сохраняет соотношение сторон изображения. Попробуйте ввести какой-нибудь большой текст, тогда вы можете начать задаваться вопросом, почему он увеличен. Также для ваших целей предпочтительнее использовать 9-patch png.