Android 9-исправление и drawable-mdpi

Я создал простой образ из 9 патчей для Android. Залил в папку drawable-mpdi. Все работает, но теряется верхняя рамка. Непонятно почему. Смотрите скриншот:

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

Это мой файл с 9 патчами:

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

https://dl.dropbox.com/u/30086473/input_login_active2.9.png

Мой макет XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/white">

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:background="@drawable/login_bg"
        android:orientation="vertical">

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/auth_logo"/>
            <EditText
                android:layout_width="273dip"
                android:id="@+id/login"
                android:layout_marginTop="20dip"
                android:layout_height="wrap_content"
                android:background="@drawable/auth_edit_text"
                android:hint="@string/auth_login"/>
            <EditText
                android:layout_width="273dip"
                android:id="@+id/password"
                android:layout_height="wrap_content"
                android:background="@drawable/auth_edit_text_left"
                android:hint="@string/auth_login_left"
                android:layout_marginLeft="17dip"/>
    </LinearLayout>
</LinearLayout>

В чем проблема? Как переделать 9-й патч, чтобы была синяя рамка вверху элемента?

Есть @drawable/auth_edit_text:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/t" />
</selector>

person Anton    schedule 01.06.2012    source источник
comment
Я не вижу, где ваш макет ссылается на drawable/input_login_active2. Это идет от drawable/login_bg? Если это так, пожалуйста, опубликуйте xml для этого.   -  person Ted Hopp    schedule 01.06.2012
comment
да. Я добавляю @drawable/auth_edit_text в текст вопроса   -  person Anton    schedule 01.06.2012


Ответы (1)


Ваши границы пикселей кажутся неправильными (возможно, наоборот). Попробуйте это вместо этого:

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

С вашим оригиналом вы бы растянули и значок телефона, а не только пузырь. Кроме того, у вас поменялись местами область содержимого и область растяжения для верхней и нижней части (я перевернул их во вложении). Хотя я не знаю, вызовет ли это конкретную проблему, которую вы показали, я бы попробовал и посмотрел, что произойдет.

EDIT: попробуйте следующее:

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

ОТРЕДАКТИРОВАННЫЙ ОТВЕТ ИЗ КОММЕНТАРИЙ: я думаю, что ваша проблема может заключаться в том, что он ищет образ ldpi, не находит его, возвращается к умолчанию и уменьшает его масштаб. Поскольку граница составляет всего 1 пиксель, она просто исчезает при уменьшении масштаба.

person Kevin Coppock    schedule 01.06.2012
comment
Да, я согласен, что ваш вариант лучше, но это не решает проблему( Попробовал щас - результат тот же. Я в полном замешательстве - проблема только в том, что разрешение экрана, как у нас на скриншоте. На hdpi,xhdpi все ок!Есть варианты? - person Anton; 01.06.2012
comment
У меня есть идея: попробуйте сделать текстовое поле длиной в 2 строки и посмотреть, существует ли проблема. Если это работает с 2 линиями, я думаю, что знаю проблему. - person Kevin Coppock; 01.06.2012
comment
Да, если в текстовом поле 2 строки - проблема тоже существует. И 3, 4 и другое количество строк - проблема все еще существует. - person Anton; 01.06.2012
comment
А если 2 строчки - теряется и нижняя рамка - person Anton; 01.06.2012
comment
Это странно. Вы уверены, что это устройство mdpi? Кроме того, я заметил, что вы указали drawable-mpdi в качестве папки, в которую вы его поместили — я уверен, что это просто опечатка, но убедитесь, что это drawable-mdpi, потому что похоже, что у вас происходит какое-то неожиданное масштабирование. Я отредактирую в другой версии, я думаю, вы должны попробовать. - person Kevin Coppock; 01.06.2012
comment
Да, это просто опечатка (drawable-mpdi :) Я не уверен, что мое устройство - mdpi... Если мое устройство - ldpi, вы думаете, что я должен создать новую версию с меньшим размером? - person Anton; 01.06.2012
comment
Да, я бы сделал это или просто использовал меньший, который я редактировал, поместив его в папку drawable-ldpi. Я думаю, что может быть ваша проблема в том, что он ищет образ ldpi, не находит его, возвращается к умолчанию и уменьшает его масштаб. Поскольку граница составляет всего 1 пиксель, она просто исчезает при уменьшении масштаба. - person Kevin Coppock; 01.06.2012
comment
Я добавлю новый экран в вопросе. одна минута - person Anton; 01.06.2012
comment
Здорово! Рад слышать это. :) Я отредактировал комментарий в ответ для всех, кто может столкнуться с этим. - person Kevin Coppock; 01.06.2012
comment
Меня интересует объяснение потери границы. aapt удаляет границу в 1 пиксель из 9-патчей и помещает информацию в фрагмент расширения простого файла .png, который затем переходит в .pak. Этот фрагмент расширения не подлежит масштабированию так же, как изображение, поэтому тот факт, что он масштабируется от mdpi до lpdi, не должен приводить к исчезновению экстентов растяжения или заполнения. Возможно, при создании ldpi drawable была непреднамеренно исправлена ​​другая проблема с графикой. - person Ted Hopp; 01.06.2012
comment
@TedHopp: при масштабировании mdpi в ldpi оно масштабируется независимо от реализации с 9 исправлениями. Вы можете сказать, просто взглянув на углы на его скриншоте - есть артефакты алиасинга, и угол не сохранил своей округлости. - person Kevin Coppock; 01.06.2012
comment
Я понимаю, что изображение масштабируется от mdpi до ldpi. Я хочу сказать, что масштабирование (которое происходит во время выполнения) не может привести к исчезновению границ из 9 патчей; границы были удалены с изображения во время сборки. - person Ted Hopp; 01.06.2012
comment
Однако он не говорит о границах из 9 участков, он говорит о синей обводке толщиной 1 пиксель вдоль верхней части пузыря. Это тонко, но это определенно отсутствует на скриншоте. - person Kevin Coppock; 01.06.2012
comment
Ладно, наконец-то я понял, о чем ты говоришь. Я неправильно понял ваше объяснение и был глух к нему. Извините за это и спасибо за терпение. - person Ted Hopp; 01.06.2012
comment
Все хорошо. :) Как я уже сказал, это очень тонкий вопрос, и его легко неправильно понять. - person Kevin Coppock; 01.06.2012
comment
@kcoppock: У меня к вам еще один небольшой вопрос) Как сделать уменьшенную версию фона, но без потери качества? Я просто пытался уменьшить изображение в Photoshop, но оно потеряло цвет и многое другое... - person Anton; 02.06.2012
comment
@Anton: Зависит от того, как вы это спроектировали изначально. В моем примере я просто использовал Content-Aware Scaling (Photoshop CS5.5), но все ваши эффекты можно было бы легко сделать с помощью слоя формы и стилей слоя, размер которых затем можно было бы изменять без потери качества. - person Kevin Coppock; 02.06.2012
comment
Спасибо. Я не знал раньше об этой замечательной функции! - person Anton; 02.06.2012