2011-07-25 93 views
5

我有興趣爲LinearLayout的子節點動態添加分隔線。我在文檔中看到LinearLayout包含CONST「SHOW_DIVIDER_MIDDLE」以及get和set分隔符方法。有人能告訴我我是如何實現它的嗎?謝謝!LinearLayout上的Android + setDividerDrawable?

「這行不通」

佈局的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); 
} 

回答

6

您需要的資源ID轉換你回來R.drawable.divider轉換成可繪製對象,鼻翼:

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」(或類似)文件。

+3

這可以工作,但請注意,setShowDividers已添加到API級別11(蜂窩)中。 http://stackoverflow.com/questions/8304221/nosuchmethod-exception-for-setshowdividers – worked

+0

@worked如果你願意的話,你可以使用ActionBarSherlock中的IcsLinearLayout,但是請注意它並不打算被使用。還有支持庫中的LinearLayoutICS –

+0

Xamarin開發人員使用_tabLayout.SetDividerDrawable(Resources.GetDrawable(Resource.Drawable.divider)); –