2011-11-14 20 views
5

Tôi đang cố gắng để thêm một loạt các nút để bố trí như thế này:Làm thế nào để thiết lập các thông số của một nút programatically

for(int i = 0; i < 10; i++) { 
    Button button = new Button(this); 
    button.setText("" + i); 
    ((LinearLayout)dialog.findViewById(R.id.Buttons)).addView(button); 
} 

Vấn đề của tôi là làm thế nào để làm điều này programatically cho tất cả các nút:

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_horizontal" 
    android:textSize="32dip" /> 

Tôi đã xem LayoutParams nhưng nó không hoàn chỉnh. Giống như làm thế nào để tôi đặt textSize thành 32 dip?

Trả lời

13

Đặt thuộc tính của bạn sử dụng đoạn mã sau:

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, 
      LayoutParams.WRAP_CONTENT); 
button.setLayoutParams(params); 
button.setGravity(Gravity.CENTER_HORIZONTAL); 
button.setTextSize(32); 

Nếu bạn muốn xác định văn bản đơn vị kích thước sử dụng:

button.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 32); 
+0

Tôi đang gặp sự cố với trọng lực. setGravity (Gravity.CENTER_HORIZONTAL) không làm giống như android: layout_gravity = "center_horizontal" trong tệp xml. Nút xml tập tin là trung tâm, nhưng không phải là những người tạo ra với setGravity(). – Espen

+0

Hãy thử điều này với các tham số bố cục: LinearLayout.LayoutParams params = new LinearLayout.LayoutParams (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL); – dymmeh

+0

Hoặc sau khi khởi tạo tham số, hãy gọi: params.gravity = Gravity.CENTER_HORIZONTAL; – dymmeh

3

Sử dụng LayoutParams cho chiều cao, chiều rộng và lực hấp dẫn với

LinearLayout.LayoutParams (int width, int height) 

nơi bạn có thể sử dụng WRAP_CONTENT cho ints.

Sau đó, có Button.setGravity()Button.setTextSize() cho hai người cuối cùng.

Hy vọng điều này sẽ hữu ích.

+0

Làm thế nào tôi có thể chỉ định nhúng bằng cách sử dụng Button.setTextSize()? – Espen

+0

public void setTextSize (đơn vị int, kích thước float); trong đó đơn vị là "COMPLEX_UNIT_DIP" và kích thước = kích thước văn bản. –

0

Bạn muốn sử dụng đối tượng LayoutParams cho cài đặt bố cục và để đặt kích thước văn bản sử dụng setTextSize() từ lớp Button.

Bạn cũng có thể đặt trọng số bằng setGravity().

0

TextSize không nằm trong thông số Layout. Để thiết textSize bạn phải

button.setTextSize(32); 
4

LayoutParams liên quan đến phụ huynh ViewGroup mà sẽ chứa các view. Vì vậy, trong trường hợp của bạn, nó là một LinearLayout, do đó bạn cần phải tạo các tham số cho cái đó. Đây là những gì tôi đang nói về:

LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
lp.weight = 1f; 

Button button = new Button(this); 
button.setLayoutParams(lp); 
button.setText("" + i); 
((LinearLayout)dialog.findViewById(R.id.Buttons)).addView(button); 
Các vấn đề liên quan