2012-01-04 10 views
9

estoy tratando de crear una barra inferior con el fondo de esta manera:banda de fondo con dos colores?

enter image description here

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 parece a esto ...:

enter image description here

¿Cómo conseguir esto, dos de color backgro und? Por favor sugiera ... Gracias

+0

Compruebe esto ... http://stackoverflow.com/a/9393867/1188978 – SkyWalker

Respuesta

12

Como otros señalaron, un parche de nueve sería ideal en esta situación (y no ocupará 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 se considera el punto de vista beeing 40dp alta

Es una lista de capas con dos bloques de diferentes colores. El problema con el enfoque XML es que no puede ajustar la altura de los bloques a un porcentaje (= 50%). Tienes que usar la mitad del tamaño de la vista real en dp. Lo que significa que debe ajustar este dibujable cada vez que cambie la altura/disposición de su vista. Un parche nueve se ajustaría a esto automáticamente.

0

Puede simplemente crear una imagen de la misma y repetirla a lo largo de la coordenada x.

4

Crear gradient.xml en/res/dibujable:

<?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 en main.xml/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 th e ángulo al reemplazar el android: valor de ángulo y color de inicio/final reemplazando android:startColor y android:endColor.

+0

45 ángulo? Eso no crea lo que está pidiendo nibha. – TryTryAgain

+0

, pero tenemos que utilizar el color de inicio y el color final a la derecha .. \ –

+0

http://www.dibbus.com/2011/02/gradient-buttons-for-android/ pase por este código que puede serle útil .... –

1

he encontrado una solución para usted, si usted está dispuesto a dejar de usar XML para dibujar ...

A partir de: Gradients and shadows on buttons

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 si podría usar un Diseño XML y hacer referencia solo a este Botón Java o tendrá que terminar haciendo su diseño completo en Java en lugar de XML ... esa sería otra pregunta para el ASI QUE.

Espero que ayude. Aunque, puede ser mi ignorancia, pero también recomendaría ir por la ruta 9patch.

P.S. Soy totalmente nuevo en Java y uso bitmaps, así que publicaré una solución más completa para su caso si lo resuelvo todo.

Cuestiones relacionadas