2012-03-08 17 views
5

Estoy intentando diseñar el divisor de lista ListView predeterminado para que tenga márgenes de espacio en blanco en ambos lados. Ya traté de establecer los márgenes de todo ListView, pero eso no creó el resultado deseado.Listdivider de estilo personalizado

lo que tengo:

What i have

lo que estoy tratando de hacer (cuenta de los márgenes en ambos lados de los separadores):

what i need to have

¿Cuál sería la mejor forma de hacer esto? ¡Gracias por adelantado!

+0

http://stackoverflow.com/questions/3979218/android-listview-divider vea este divisor personalizado y haga algunos Esfuerzos ... –

Respuesta

6

Eventualmente pude resolver mi problema usando la respuesta aceptada de la publicación this (sin la parte de degradado)

0

Sugeriría crear su propio ListAdapter y configurarlo en su ListView. Luego, en su método getView, puede diseñar elementos individuales de la lista de la forma que desee.

10

use <include layout="@layout/divider" /> y diseño personalizado para la línea. de esta manera:

main.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 
<ListView android:id="@+id/listview" 
android:layout_width="wrap_content" 
android:divider="@layout/divider" 
android:dividerHeight="3sp" 
android:layout_height="wrap_content" /> 
</LinearLayout> 

divider.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" > 
    <gradient 
     android:startColor="#00000000" 
     android:centerColor="#FFFFFF" 
     android:endColor="#00000000" 
     /> 
    <corners 
     android:radius="4dp" 
     /> 
</shape> 

AndroidlistviewdividerActivity.class

public class AndroidlistviewdividerActivity extends Activity { 
    /** Called when the activity is first created. */ 
    private ListView lv; 
    private String listview_array[] = { "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", 
            "SEVEN", "EIGHT", "NINE", "TEN" }; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     lv = (ListView) findViewById(R.id.listview); 
     lv.setAdapter(new ArrayAdapter<String>(this, 
     android.R.layout.simple_list_item_1, listview_array)); 
     lv.setTextFilterEnabled(true); 
     lv.setOnItemClickListener(new OnItemClickListener() 
     { 
     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
       long arg3) { 
      // TODO Auto-generated method stub 
      AlertDialog.Builder adb = new AlertDialog.Builder(
         AndroidlistviewdividerActivity.this); 
       adb.setTitle("ListView OnClick"); 
       adb.setMessage("Selected Item is = " 
       + lv.getItemAtPosition(arg2)); 
       adb.setPositiveButton("Ok", null); 
       adb.show();  
     } 
     }); 
    } 
} 
+0

Gracias, esto es más o menos lo que estoy buscando. Pero si configuro el divisor ListView en @dispositivo/divisor, la aplicación se bloquea. ¿Alguna sugerencia? me sale el siguiente error: Causado por: org.xmlpull.v1.XmlPullParserException: Binario archivo XML línea # 2: inválido etiqueta estirable Ver – Meatje

+0

@Meatje: tienen que obtener una solución o no? –

+0

@Meatje: está bien, estoy actualizando mi solución que está funcionando perfectamente a mi lado ... –

Cuestiones relacionadas