9-patch выглядит иначе на реальном устройстве, чем в предварительном просмотре XML

Я создал фон из 9 патчей для EditText.

XML-код:

<EditText
    android:id="@+id/editText1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="15dp"
    android:layout_marginRight="15dp"
    android:background="@drawable/searchnew"
    android:ems="10"
    android:hint="  Search recorded files..."
    android:textColor="#646464" >

</EditText>

Предварительный просмотр XML:

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

Реальное устройство:

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

изображение с 9 патчами:

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

Честно говоря, меня это даже не сильно беспокоит, но я все еще удивляюсь, какого черта это происходит? Почему фон EditText шире и выше на реальном устройстве?

Бонусный несвязанный вопрос: есть идеи, как избавиться от «уродливых» углов? Вы можете увидеть пиксели по отдельности, если внимательно присмотритесь, но мне нужен идеальный дизайн с точностью до пикселя.


person Guy    schedule 28.10.2013    source источник


Ответы (1)


Только что нашел причину, проведя еще несколько исследований. Текст внутри EditText имеет некоторые отступы по умолчанию. Вот почему 9-патч растянулся больше, когда я запускал его на реальном устройстве. Все, что мне нужно было сделать, это установить отступ на 0.

Установка верхнего отступа на 0 пример:

android:paddingTop="0dp"

Сделайте это так для верхнего, нижнего, левого, правого и фон останется фиксированным :)

person Guy    schedule 28.10.2013
comment
Мэтью, я понимаю, что вы нашли проблему, но ваш девятый патч кажется мне странным. Разве точки не должны быть в верхней части изображения и в нижней части? И с левой стороны и с правой тоже? - person Stephan Branczyk; 29.10.2013
comment
Нет, насколько я знаю. Верхняя и левая точки определяют масштабируемую область. Нижняя и правая точки определяют область заливки и являются необязательными. Дайте мне знать, если я ошибаюсь. Мой 9-патч работает нормально. - person Guy; 29.10.2013