Intereting Posts
Fragment isAdded () возвращает false на уже добавленном фрагменте Если wakelock приобретен и мое приложение падает, что мне делать? Переверните растровое изображение в андроиде? Проверка наличия столбца в базе данных приложений на Android Изменение языка: принудительная активность для перезагрузки ресурсов? Могу ли я изменить анимацию перехода startActivity () Android? Изменение позиции просмотра после окончания анимации Тестовая активность onCreate Exception Получить имя приложения из имени пакета Опираясь на холст и объекты с несколькими красками Ограничение Android-приложения на определенные экраны Отсутствует папка приложения в папке sdk Обнаружение движения с использованием OpenCV Android: вопрос о выставлении счетов в приложении Почему мы используем 10.0.2.2 для подключения к локальному веб-серверу вместо использования IP-адреса компьютера в Android-клиенте

Что-то не так в радиусе Corner Android

Я делаю свой собственный просмотр для Android 2.3.

У меня есть.

  • LinearLayout (Горизонтально)
  • AutoCompleteTextView
  • ImageButton

Я добавил кнопку и AutoCompleteTextView в LinearLayout .

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

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

Я установил это для ImageButton

 <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_pressed="true" > <shape> <solid android:color="#27AFE0" /> <stroke android:width="0.5dp" android:color="#000000" /> <corners android:topRightRadius="10dp" android:bottomRightRadius="10dp" android:topLeftRadius="0.1dp" android:bottomLeftRadius="0.1dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> <item> <shape> <solid android:color="#D3DBDE"/> <stroke android:width="0.5dp" android:color="#000000" /> <corners android:topRightRadius="10dp" android:bottomRightRadius="10dp" android:topLeftRadius="0.1dp" android:bottomLeftRadius="0.1dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> 

Доступно для автозаполнения

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle"> <solid android:color="#D3DBDE"/> <stroke android:width="0.5dp" android:color="#000000"/> <corners android:topLeftRadius="10dp" android:bottomLeftRadius="10dp" android:topRightRadius="0.1dp" android:bottomRightRadius="0.1dp"/> </shape> </item> 

Но когда я запускаю это в Android 2.3, это результат (эмулятор и реальное устройство)

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

Если я запускаю также в Android 4.0. Он работает нормально.

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

Вопрос в том, что не так в моем коде? Или есть ошибка в Android 2.3?

Хорошо, так вот, это дело, это тоже меня укусило. Есть две вещи с этим.

В вашем ImageButton Selector вы, похоже, дважды копировали атрибуты для правильных углов в каждом угловом теге.

Второй – ошибка в андроиде до версии 3.0. При указании углов раздельно, нижний левый и правый углы перевернуты.

http://code.google.com/p/android/issues/detail?id=9161

Я извлек значения до размеров и поместил их в два разных файла,

Res / values ​​/ corners.xml – с измененным материалом

Res / values-v12 / corners.xml – со значениями в них.

В ранних версиях (ранее, чем ICS, т.е. 4.0) в Android появилась ошибка, где они неправильно использовали атрибут «углы» класса «Shape». Итак, чтобы получить правильные углы во всех версиях, вам нужно будет написать условие, которое проверяет целевую версию и, соответственно, вы можете установить правильный фон. Метод, подобный этому, поможет решить вашу проблему –

/ ** * обработка ошибки в версиях Pre ICS с угловым элементом класса Shape * * /

 private void getPreICSButtonBackground() { if(Build.VERSION.SDK_INT >= 4.0){ leftButton.setBackgroundDrawable(getResources().getDrawable(R.drawable.btn_rounded_left)); rightButton.setBackgroundDrawable(getResources().getDrawable(R.drawable.btn_rounded_right)); } } 

Где в 'R.drawable.btn_rounded_left' углы реализованы как

  <corners android:topLeftRadius="5dp" android:topRightRadius="0dp" android:bottomLeftRadius="5dp" android:bottomRightRadius="0dp" /> 

И если он работает в более ранних версиях, то установите фон с углами как

 <corners android:topLeftRadius="5dp" android:topRightRadius="0dp" android:bottomLeftRadius="0dp" android:bottomRightRadius="5dp" /> 

Аналогично сделайте для правой кнопки Button. Надеюсь, что это решает вашу проблему