Android + setDividerDrawable на LinearLayout? - PullRequest
6 голосов
/ 25 июля 2011

Я заинтересован в том, чтобы динамически добавлять разделители для дочерних элементов LinearLayout. В документации я вижу, что LinearLayout содержит CONST "SHOW_DIVIDER_MIDDLE" наряду с методами get и set divider Может кто-нибудь показать мне, как я это реализую? Спасибо!

"Это не работает"

макет 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>

Основной:

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

1 Ответ

7 голосов
/ 11 января 2012

Вам необходимо преобразовать идентификатор ресурса, который вы получаете от R.drawable.divider, в Drawable объект, 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));

    ...
 }
...

Это предполагает, что у вас есть файл с именем 'divider.jpg '(или аналогичный) в каталоге ресурсов.

...