2011-10-18 5 views
8

tengo un problema con este separador:el relleno de separación, haciendo caso omiso de que

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > 
    <padding android:left="10dip" android:right="10dip"/> 
    <solid android:color="@color/listSeparator"/> 
    <size android:height="1px" /> 
</shape> 

que estoy tratando de hacer un poco de margen/relleno en la izquierda/derecha de la vista de lista de componentes (usando un pariente en él, no es un objeto ListView). A continuación, cuando trato de ponerlo de esta manera ...

getListView().setDivider(getResources().getDrawable(R.drawable.song_separator)); 

... es directamente ignorados, poniendo un separador de diseño completa.

Ahora no sé cuál es el problema, pero sé que:

  • no puedo poner un margen de toda ListView, porque yo quiero que el fill_parent listheader
  • me han tratado de pongo un borde falso, pero no es lindo cuando cambio su color de fondo, poniéndome un espacio de separación.

¿Alguna idea?

MODIFICADO

Mi última solución parcial es poner ImageView, alineados junto a la parte inferior de los padres. Esto es una causa parcial que pone en la parte inferior pero no en el divisor original.

Si alguien puede decirme cómo poner esa ImageView en la línea exacta del divisor, le daría el +50 también.

+0

puede publicar el código donde puede establecer el divisor? – user370305

+0

Lo estoy poniendo bien porque cuando cambio el color o el dibujable, se ejecuta. no hay más código involucrado. –

+0

android: divider = "@ drawable/song_separator" en la vista de lista del archivo xml de diseño –

Respuesta

1

Quiroga, así que mi primera apuesta sería hacer que el código sea más debatible dividiendo el método en líneas individuales.

ListView lview = getListView(); 
if (lview != null){ 
    Resources res = getResources(); 
    if (res != null) { 
     Drawable dable = res.getDrawable(R.drawable.song_separator); 
     if (dable != null){ 
      lview.setDivider(dable) 
     } 
    } 
} else { 
    //Log in some way that you have a problem. 
} 

sé que parece un poco más complicado, pero de esa manera usted puede asegurarse de que el Disponibles se encuentra y es la correcta y luego asignar correctamente a la ListView.

Otra cosa que puedes probar es simplemente asignar un separador diferente de la plataforma y ver si funciona correctamente.

También intente poner sus manos en el Android Source Code it is back online si agrega eso a su Proyecto Java puede depurar en las clases de Plataforma y depurar profundamente en el código de la plataforma.

Así que esta no es realmente una solución para su problema, pero tal vez puede ayudarlo a encontrar la solución.

+0

He intentado con tu código también para confirmar que listView está bien y getResources() también, pero tengo el problema. Mi última solución es poner un ImageView, el ancho de ese relleno alineado en la parte inferior. Si alguien me puede decir cómo poner esa ImageView en la línea exacta del separador, le daría el +50 también. –

+0

@ A.Quiroga y esto tampoco funciona para el último elemento ListView si desea que los divisores solo se muestren en el medio. Pequeño detalle pero aún digno de mención. – dcow

1

Ponga la cabecera en un archivo separado y acceder a ella como:

AuditActivity clase pública se extiende ListActivity {

Budget budget; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.audit); 
    ListView lv = getListView(); 
    LayoutInflater infalter = getLayoutInflater(); 
    ViewGroup header = (ViewGroup) infalter.inflate(R.layout.header, lv, false); 
    lv.addHeaderView(header); 
    budget = new Budget(this); 
    /* 
    try { 
     test = budget.getTransactions(); 
     showEvents(test); 
    } finally { 

    } 
    */ 

// switchTabSpecial(); }

Siga este enlace ....... tiene una información detallada, use RelativeLayout en lugar de Linear One, espero que esto lo ayude. Android: Adding static header to the top of a ListActivity

+0

Tengo el listHeader separado en otro diseño. Es un margen de causa extraño que afecta al encabezado, ya que el encabezado está inflado en la lista (como me muestra). –

Cuestiones relacionadas