LinearLayout上的Android + setDividerDrawable?

wor*_*ked 6 android drawable android-linearlayout

我有兴趣动态地为LinearLayout的子项添加分隔符.我在文档中看到LinearLayout包含CONST"SHOW_DIVIDER_MIDDLE"以及get和set divider方法.有人能告诉我如何实现它吗?谢谢!

"这不起作用"

layout 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>
Run Code Online (Sandbox Code Playgroud)

主要:

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

小智 7

您需要将您获得的资源ID 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));

    ...
 }
...
Run Code Online (Sandbox Code Playgroud)

这假设您在资源目录中有一个名为'divider.jpg'(或类似文件)的文件.

  • 这有效,但请注意,setShowDividers是在API级别11(Honeycomb)中添加的.http://stackoverflow.com/questions/8304221/nosuchmethod-exception-for-setshowdividers (3认同)