2010-09-09 22 views
15

¿Hay alguna manera de definir una parte superior e inferior de carrera de un gradiente, o crear una forma compuesta estirable ?:¿Rectángulo de forma dibujable, especifique los colores de trazo superior e inferior?

// option1: 
<shape 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 

    <gradient 
    android:startColor="#f00" 
    android:endColor="#0f0" 
    /> 
    <stroke 
    top=1dip, yellow 
    bottom=1dip, purple 
    /> 
</shape> 

// option2 
<shape 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 

    <shape 
    android:shape="rectangle" 
    height=1dip, color=yellow /> 

    <gradient 
    android:startColor="#f00" 
    android:endColor="#0f0" 
    /> 

    <shape 
    android:shape="rectangle" 
    height=1dip, color=purple /> 
</shape> 

No creo que sea son posibles?

Gracias

+0

ver esto: http://stackoverflow.com/questions/1598119/is-there-an-easy-way-to-add- a-border-to-the-top-and-bottom-of-an-android-view – Kenumir

Respuesta

10

supongo, se puede hacer mediante el uso de layer-list.

siguiente es el res/dibujable/layer_list_shape.xml
he utilizado dimensiones no modificables ..

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
<item> 
    <shape android:shape="rectangle"> 
     <size android:width="150dp" android:height="6dp"/> 
     <solid android:color="#ff0" /> 
    </shape> 
</item> 
<item android:top="6dp"> 
    <shape android:shape="rectangle" > 
     <size android:width="150dp" android:height="50dp"/> 
     <gradient 
      android:endColor="#0f0" 
      android:startColor="#f00" /> 
    </shape> 
</item> 
<item android:top="82dp"> 
    <shape android:shape="rectangle" > 
     <size android:width="150dp" android:height="6dp"/> 
     <solid android:color="#ff0" /> 
    </shape> 
</item> 

res/layout/main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 
<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/layer_example" /> 
</LinearLayout> 

Espero que esto ayude ..

0

Si no desea utilizar las dimensiones codificados que es posible utilizar 3 puntos de vista:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
android:background="@android:color/black" > 

<View 
    android:layout_width="match_parent" 
    android:layout_height="1dip" 
    android:background="@android:color/white"/> 

<TextView 
    android:id="@+id/header" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    style="@style/header" /> 

<View 
    android:layout_width="match_parent" 
    android:layout_height="1dip" 
    android:background="@android:color/white"/> 

</LinearLayout> 

El elemento de cabecera tiene un fondo degradado. Por supuesto, podrías usar cualquier otro diseño también.

1

aprovechando la respuesta dada por Vijay C, puede crear un dibujante e incluirlo en cualquier diseño. La respuesta anterior estaba bien, pero agregó dimensiones codificadas que imposibilitaban su uso en segundo plano como wrap_content. Además, de esta manera se reduce el número de elementos de 3 a 2.

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape android:shape="rectangle"> 
      <solid android:color="#d8dae3" /> 
     </shape> 
    </item> 
    <item 
     android:bottom="2dp" 
     android:top="2dp"> 
     <shape android:shape="rectangle"> 
      <gradient 
       android:endColor="@android:color/white" 
       android:startColor="@android:color/white" /> 
     </shape> 
    </item> 
</layer-list> 
+0

gracias, ayudó. – hue23289

Cuestiones relacionadas