2012-07-10 21 views
31

Tôi lập trình tạo LinearLayout cho AlertDialog bằng một số nút.Android - Làm thế nào để lập trình kiểu nút trong Linearlayout?

tôi MUỐN để làm điều này:

<LinearLayout android:id="@+id/footer" android:layout_width="fill_parent" 
style="@android:style/ButtonBar"> 

Nhưng với mã như thế này:

LinearLayout buttons = new LinearLayout(parentContext); 
buttons.setOrientation(LinearLayout.HORIZONTAL); 
LinearLayout.LayoutParams buttonsParams = 
    new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, 
    LayoutParams.WRAP_CONTENT); 
topLayout.addView(buttons, buttonsParams); 
buttons.setLayoutParams(buttonsParams); 
Button btnAdd = new Button(context); 
btnAdd.setText("Add"); 

Làm thế nào tôi có thể thiết lập các phong cách của các nút (sử dụng một thanh nút) programmitically?

+0

Đáng tiếc là nó là không thể. Bạn chỉ có thể thêm kiểu theo chương trình vào khoảng văn bản. –

+0

Có thể điều này có thể giúp: http://stackoverflow.com/questions/2016249/how-to-programmatically-setting-style-attribute-in-a-view – 0gravity

+0

không hoạt động http://stackoverflow.com/ Câu hỏi/3142067/android-set-style-in-code – user1365315

Trả lời

41

Hope Tôi không quá muộn để tham gia bữa tiệc :)

Vâng, Styles có thể được áp dụng cho một View ở giai đoạn khởi tạo. Ví dụ:

LinearLayout button = new LinearLayout(context, null, android.R.style.ButtonBar); 
+1

Điều này chỉ hoạt động từ API cấp 11, bạn có biết cách thực hiện nó trong các API cũ hơn không? – Oliv

+6

@Oliv Tôi tin rằng nó không thể cho các API cũ hơn.Tuy nhiên, như là một thay thế, tôi sẽ đề nghị bạn Xác định 'LinearLayout' của bạn như một XML với tất cả kiểu dáng bạn muốn và đơn giản là ** thổi phồng ** XML đó vào một đối tượng bên trong mã của bạn. – waqaslam

+0

Nếu tôi thay đổi 'Nút' thành' LinearLayout', tôi bỏ các phương thức khác trên lớp Button như setText() – ishandutta2007

2

Thay vì waqaslams

LinearLayout button = new LinearLayout(context, null, android.R.style.ButtonBar); 

(đó là, căn cứ vào ý kiến, API tin cậy) Tôi cũng đã đọc ridoys trả lời từ đây [Android Button Styling Programatically] đó là

transferBtn.setBackgroundResource(R.layout.buttonstyle); 

(hiển thị các câu trả lời ở trên vì một trong những câu trả lời này cũng có thể phù hợp với bạn, tùy thuộc vào phiên bản API bạn sử dụng),

Nhưng đây là những gì làm việc cho tôi (tâm sự thay đổi từ "bố trí" thành "drawable") :

Button b = new Button(this); 
b.setBackgroundResource(R.drawable.button_custom_green); 

(câu trả lời từ [How to programmatically setting style attribute in a view)

20

này làm việc cho tôi

Button button = new Button(new ContextThemeWrapper(context,ButtonStyle), null, ButtonStyle) 
+0

'int ButtonStyle = R.style.your_button_style;' –

4

Đây là câu trả lời duy nhất thực sự phân phối những gì tôi đang tìm kiếm: http://belencruz.com/2013/04/set-styles-programmatically-in-android/

Về cơ bản, hãy tạo tệp XML bố cục chỉ đơn giản có phần tử <Button/> với kiểu bạn muốn. Sau đó, thổi phồng nó theo chương trình và chỉ tùy chỉnh văn bản nút.

cái gì đó dọc theo dòng:

<?xml version="1.0" encoding="utf-8"?> 
<Button style="@style/your_custom_style_here"/> 

Trong mã:

Button button = (Button)getLayoutInflater().inflate(R.layout.your_custom_button_layout_file, null); 
button.setText("Your Text"); 
Các vấn đề liên quan