Algo no funciona en Radio de esquina Android
Estoy haciendo mi propia vista de búsqueda para Android 2.3.
Yo tengo.
- Emulador SDK de Android con resolución Full HD
- La grabación de vídeo no funciona en ICS
- Preferencia personalizada rota en Honeycomb / ICS
- ¿Tiene Jellybean 4.2 la intención de conectarse a una VPN ya definida?
- ¿Cómo pueden las fuentes provocar errores OpenGL fuera de la memoria?
-
LinearLayout
(Horizontal) -
AutoCompleteTextView
-
ImageButton
He añadido el botón y AutoCompleteTextView
a LinearLayout
.
Quiero poner un radio de esquina en mi propio control como la imagen que se muestra a continuación.
Establecer esto dibujable a 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>
Dibujable a AutoCompleteText
<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>
Pero cuando ejecuto esto en android 2.3 esta es la salida (emulador y dispositivo real)
Si funciono también en Android 4.0. Funciona bien.
La pregunta es, ¿qué hay de malo en mi código? O hay error en Android 2.3?
- Cómo hacer que mi proyecto sea compatible con diferentes versiones de sdk mientras utiliza funciones para una versión específica
- JavaScript haga clic en eventos que no funcionan en Samsung Galaxy SIII en Android 4.0.4 navegador predeterminado
- Los dispositivos ADK 1.0 no funcionan con Jelly Bean, ¿por qué?
- El menú de opciones que no se muestra en ICS utilizando la biblioteca de compatibilidad
- Android ICS con problemas de compatibilidad con JQuery Mobile1.0
- Mostrando bloques de DialogFragments ICS
- ¿Cómo usar y probar la API del Calendario de Android 4.0 en el emulador?
- ¿Cuál es el verdadero propósito de la etiqueta contentDescription de Android?
Bueno, así que aquí está el trato esta ticked me también. Hay 2 cosas con esto.
En su Selector de ImageButton, parecía que copiar los atributos de las esquinas de la derecha dos veces en cada etiqueta de esquina.
El segundo es un error en android hasta la versión 3.0. Al especificar las esquinas por separado, las esquinas inferiores izquierda y derecha se vuelcan.
http://code.google.com/p/android/issues/detail?id=9161
He extraído los valores a dimens y ponerlos en dos archivos diferentes,
Res / values / corners.xml – con las cosas invertidas
Res / values-v12 / corners.xml – con los valores sanos en ellos.
Hay un error en las versiones anteriores (anteriores a ICS, es decir, 4.0) de android, donde se han implementado incorrectamente el atributo 'corners' de la clase 'Shape'. Por lo tanto, para obtener el tipo correcto de esquinas en todas las versiones, tendrá que escribir una condición que comprueba la versión de destino y, en consecuencia, puede establecer el fondo correcto. Un método algo como esto resolverá su problema –
/ ** * manejo del error en las versiones pre ICS con elemento de esquina de la clase 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)); } }
Donde en las esquinas "R.drawable.btn_rounded_left" se implementan como
<corners android:topLeftRadius="5dp" android:topRightRadius="0dp" android:bottomLeftRadius="5dp" android:bottomRightRadius="0dp" />
Y si se está ejecutando en versiones anteriores, ajuste el fondo con esquinas como
<corners android:topLeftRadius="5dp" android:topRightRadius="0dp" android:bottomLeftRadius="0dp" android:bottomRightRadius="5dp" />
Del mismo modo para el botón del lado derecho. Espero que esto resuelva tu problema
- Cómo persistir el permiso en android API 19 (KitKat)?
- Cómo cambiar la posición del botón de la manija del tirador deslizante de android