Что-то не так в радиусе 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?

Solutions Collecting From Web of "Что-то не так в радиусе Corner Android"

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

В вашем 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. Надеюсь, что это решает вашу проблему