2011-07-25 25 views
5

Estoy interesado en agregar separadores dinámicamente a los hijos de LinearLayout. Veo en los documentos que LinearLayout contiene un CONST "SHOW_DIVIDER_MIDDLE" junto con los métodos get y set divider. ¿Puede alguien mostrarme cómo lo implemento? ¡Gracias!Android + setDividerDrawable en LinearLayout?

"Esto no funciona"

diseño xml:

<LinearLayout android:id="@+id/bar" 
     android:orientation="horizontal" 
     android:layout_height="40dip" android:layout_width="fill_parent" 
     android:background="@drawable/ab_background_gradient" android:gravity="right|center_vertical"> 

     <!-- sort button --> 
     <Button android:id="@+id/sortBtn" android:background="@drawable/defaultt" 
       android:layout_width="30dip" android:layout_height="30dip" android:onClick="sortThis" /> 

     <!-- add button --> 
     <Button android:id="@+id/addBtn" android:background="@drawable/defaultt" 
       android:layout_width="30dip" android:layout_height="30dip" android:onClick="addThis" /> 
    </LinearLayout> 

principal:

... 
private void setupViews() { 
     //bar 
     mBar = (LinearLayout) findViewById(R.id.bar); 
     mBar.setDividerDrawable(R.drawable.divider); 
} 

Respuesta

6

Es necesario para convertir el ID de recurso que vuelva de R.drawable.divider en un Disponibles objeto, Ala:

import android.content.res.Resources; 
... 

public void onCreate(Bundle savedInstanceState) { 
    ... 

    Resources res = this.getResources(); 

    LinearLayout layout = new LinearLayout(this); 
    layout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE | LinearLayout.SHOW_DIVIDER_BEGINNING | LinearLayout.SHOW_DIVIDER_END); 
    layout.setDividerDrawable(res.getDrawable(R.drawable.divider)); 

    ... 
} 
... 

Esto supone que tienes un archivo llamado 'divider.jpg' (o similar) en el directorio de recursos.

+3

Esto funciona, pero tenga en cuenta que setShowDividers se agregó en el nivel API 11 (Honeycomb). http://stackoverflow.com/questions/8304221/nosuchmethod-exception-for-setshowdividers – worked

+0

@worked puede usar IcsLinearLayout que está en ActionBarSherlock si lo desea, pero tenga en cuenta que no está destinado a ser utilizado. también hay LinearLayoutICS que se encuentra en la biblioteca de soporte –

+0

Los desarrolladores de Xamarin usan este _tabLayout.SetDividerDrawable (Resources.GetDrawable (Resource.Drawable.divider)); –

Cuestiones relacionadas