versioni - android wikipedia




In Android, come fare spazio tra i bambini LinearLayout? (6)

Android ora supporta l'aggiunta di una vista Space tra le viste. È disponibile da 4.0 ICS in poi.

Aggiungo programmaticamente viste personalizzate a un LinearLayout verticale e vorrei che ci fosse un po 'di spazio tra le viste. Ho provato ad aggiungere: setPadding (0, 1, 0, 1) al mio costruttore CustomView, ma questo non sembra avere alcun effetto. Qualche consiglio?

* È stato sottolineato che dovrei usare i margini. Dal momento che sto aggiungendo dinamicamente le viste, ho bisogno di impostare i margini dal codice (non in xml). Credo che il modo per farlo sia sotto, ma non funziona.

public class MyView extends View
{
    public MyView (Context context)
    {
        super(context);

        MarginLayoutParams params = new MarginLayoutParams(LayoutParams.WRAP_CONTENT,  LayoutParams.WRAP_CONTENT);
        params.setMargins(0, 10, 0, 10);
        setLayoutParams(params);

*Modificare. Ho anche provato a usare MarginLayoutParams come parametro mentre aggiungo le viste al layout Lineare (come sotto). Anche questo non ha funzionato:

MarginLayoutParams params = new MarginLayoutParams(linearLayout.getLayoutParams());
linearLayout.setMargins(0, 10, 0, 10);
linearLayout.addView(view, params);

Grazie.


Dal livello API 14 puoi semplicemente aggiungere un divisore (trasparente) divisibile:

android:divider="@drawable/divider"
android:showDividers="middle"

e gestirà il resto per te!


L'esempio qui sotto fa solo ciò di cui hai bisogno programmaticamente. Ho usato una dimensione fissa di (140,398).

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(140, 398);
        layoutParams.setMargins(24, 0, 24, 0);
        layout.addView(button,layoutParams);

La soluzione API> = 11 :

È possibile integrare l'imbottitura nel divisore. Nel caso in cui stavi usando none, crea solo un drawable alto e vuoto e LinearLayout come il divisore di LinearLayout :

    <LinearLayout
            android:showDividers="middle"
            android:divider="@drawable/empty_tall_divider"
...>...</LinearLayout>

empty_tall_divider.xml:

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <size
            android:height="40dp"
            android:width="0dp"/>
</shape>

Se si utilizza ActionBarSherlock , è possibile utilizzare com.actionbarsherlock.internal.widget.IcsLinearLayout:

<com.actionbarsherlock.internal.widget.IcsLinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:divider="@drawable/list_view_divider"
        android:dividerPadding="2dp"
        android:showDividers="middle" >
...
</com.actionbarsherlock.internal.widget.IcsLinearLayout>

Utilizza LinearLayout.LayoutParams anziché MarginLayoutParams . Here's la documentazione.





android