Con bandas de fondo con dos colores?
Estoy intentando crear una barra inferior con el fondo como esto:
- El estudio de Android de repente no puede resolver el símbolo R
- Las vistas dentro de un Grupo de vistas personalizado no se muestran
- Android studio AssertionError: No invocar waitForSmartMode desde dentro de la acción de lectura en modo mudo
- StaggeredGridLayoutManager reordena los elementos
- Disposición del paisaje de Android
Actualmente estoy usando el siguiente código:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape> <gradient android:endColor="#000000" android:startColor="#696969" android:centerColor="#696969" android:angle="270" /> <stroke android:color="#696969" /> <padding android:left="2dp" android:top="3dp" android:right="2dp" android:bottom="3dp" /> </shape> </item> </selector>
Pero la salida se ve así …:
¿Cómo conseguir esto, fondo de dos colores? Por favor sugiera .. Gracias
- GUIs basadas en XML y rendimiento
- Animación en layout_gravity
- Las pestañas de menú no responden
- Creación de un diseño sin un borde que superpone la capa de fondo
- SetSelection en un spinner se bloquea cuando layout_weight se asigna a spinner
- ¿Icono con el interior del texto - cómo definir en la disposición?
- CoordinatorLayout + AppBarLayout + NavigationDrawer
- Android paquete / nombre de la clase en la disposición XML?
Como otros señalaron, un juego de nueve sería ideal en esta situación (y no tomará mucha memoria) . Trabajar con XML no es óptimo. Aquí hay algo que puede probar:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:bottom="20dp"> <shape android:shape="rectangle" > <size android:height="20dp" /> <solid android:color="#ff0000" /> </shape> </item> <item android:top="20dp"> <shape android:shape="rectangle" > <size android:height="20dp" /> <solid android:color="#0000ff" /> </shape> </item> </layer-list>
En este caso su opinión se considera ser 40dp alto
Es una lista de capas con dos bloques en diferentes colores. El problema con el enfoque XML es que no se puede ajustar la altura de los bloques a un porcentaje (= 50%). Tienes que usar la mitad del tamaño real de la vista en dp. Lo que significa que usted tiene que ajustar este dibujable cada vez que cambie su altura de vista / diseño. Un juego de nueve se ajustaría automáticamente a esto.
Cree gradient.xml en / res / drawable:
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:startColor="#FFFFFF" android:endColor="#00000000"/> </shape>
Y en su archivo de diseño main.xml en / res / layout:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/gradient"> </LinearLayout>
Puede especificar el ángulo reemplazando el valor de ángulo de android: y el color de inicio / fin reemplazando android:startColor
and android:endColor
.
He encontrado una solución para ti, si estás dispuesto a renunciar a usar XML para dibujarlo …
Dibujo de: Gradientes y sombras en los botones
¡Eso es lo que quieres! Pero diferentes colores, tamaño, y como un botón …
Bitmap bmResult = Bitmap.createBitmap(buttonWidth, buttonHeight, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bmResult); Paint paint = new Paint(); paint.setShader(new LinearGradient (0, 0, 0, bmResult.getHeight()/2, 0xFF284560, 0xFF284060, TileMode.MIRROR)); canvas.drawPaint(paint); paint.setShader(new LinearGradient (0, 0, 0, bmResult.getHeight()/2, 0x55FFFFFF, 0x22FFFFFF, TileMode.CLAMP)); paint.setMaskFilter(new BlurMaskFilter(3, BlurMaskFilter.Blur.NORMAL)); canvas.drawRect(0, 0, bmResult.getWidth(), bmResult.getHeight()/2, paint)
… cambiando el color, por supuesto.
No estoy seguro de si podría utilizar un XML Layout y hacer referencia a este botón de Java solo o tendrás que terminar haciendo todo tu diseño en Java en oposición a XML … eso sería otra pregunta para el SO.
Espero que ayude. Aunque, puede ser mi ignorancia, pero también recomendaría ir la ruta 9patch.
PS Soy totalmente nuevo en Java y uso de bitmaps, así que publicaré una solución más completa para tu caso si lo descubro todo.
Usted podría apenas crear una imagen de ella y repetirla a lo largo de la coordenada de x.
Puede utilizar una imagen de 9png como fondo.
Consulte http://developer.android.com/guide/developing/tools/draw9patch.html
Editar:
Puede seguir este tutorial http://android10.org/index.php/articlesother/279-draw-9-patch-tutorial
- BitmapFactory.decodeStream devuelve null sin excepción
- Cómo capturar la pantalla con / dev / graphics / fb0 (Android)