2011-07-25 30 views
5

Tôi quan tâm đến việc thêm bộ chia cho con của LinearLayout một cách linh hoạt. Tôi thấy trong các tài liệu mà LinearLayout chứa CONST "SHOW_DIVIDER_MIDDLE" cùng với nhận và đặt các phương thức chia. Ai đó có thể chỉ cho tôi cách tôi thực hiện nó? Cảm ơn!Android + setDividerDrawable trên LinearLayout?

"này không làm việc"

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> 

chính:

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

Trả lời

6

Bạn cần phải chuyển đổi id Resource bạn trở lại từ R.drawable.divider thành drawable đối tượng, 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)); 

    ... 
} 
... 

này giả định bạn đã có một file có tên 'divider.jpg' (hoặc tương tự) trong thư mục tài nguyên của mình.

+3

Tác phẩm này, nhưng lưu ý rằng setShowDividers đã được thêm vào ở cấp API 11 (Honeycomb). http://stackoverflow.com/questions/8304221/nosuchmethod-exception-for-setshowdividers – worked

+0

@worked bạn có thể sử dụng IcsLinearLayout trong ActionBarSherlock nếu bạn muốn, nhưng lưu ý rằng nó không có ý định được sử dụng. cũng có LinearLayoutICS trong thư viện hỗ trợ –

+0

Nhà phát triển Xamarin sử dụng _tabLayout.SetDividerDrawable (Tài nguyên.GetDrawable (Resource.Drawable.divider)); –

Các vấn đề liên quan