2011-08-17 27 views

Trả lời

18

Sử dụng thuộc tính layout_margin của phần tử nút. Điều đó không hoạt động?

<Button android:layout_margin="5px" (...)/> 

Sửa

Khi tạo một nút trong java, LayoutParams được sử dụng để xác định lợi nhuận và như vậy.

Button button = new Button(); 
(....) 
params = new LinearLayout.LayoutParams(); 
params.leftMargin = 5; 
(set params as you need) 
parent.addView(button, params); 

LayoutParams bạn sử dụng phải khớp với Bố cục mà bạn thêm nút vào (xem http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html). Đối với một LinearLayout, sử dụng một LinearLayout.LayoutParams và thiết lập các trường * Margin cho phù hợp.

+0

Tôi mới vào Android! Tôi nhầm lẫn, nếu tôi có nó trong XML, thì làm cách nào tôi có thể sử dụng trong khi tạo động? Mã của tôi trông giống như thế này, btnSend = new Button (this); btnSend.setText ("Gửi ..."); btnSend.setBackgroundResource (R.drawable.red_button); btnSend.setOnClickListener (mới View.OnClickListener() { \t \t \t \t \t \t public void onClick (View v) { \t \t \t \t // TODO Auto-tạo ra phương pháp còn sơ khai \t \t \t \t \t \t \t \t // Mã tại đây ... \t \t \t \t \t \t \t} \t \t}); –

+0

Tôi chỉnh sửa bài đăng của mình với thông tin về tạo nút động – njzk2

+2

Cảm ơn bạn đã giúp đỡ nhiều. Tôi xin lỗi rằng Liều lượng không làm những gì tôi muốn! Say, LinearLayout.LayoutParams lParam = new LinearLayout.LayoutParams ( \t \t LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); lParam.setMargins (20, 20, 20, 20); Nó thêm lề vào LinearLayout. Không phải nút. Ví dụ, nó có 2 nút, cạnh nhau, nó không * không * thêm không gian giữa các nút! Đó là mục tiêu của tôi! Cảm ơn! –

0

Việc thêm đệm vào các nút cũng sẽ giải quyết được sự cố của bạn. Check this out http://developer.android.com/resources/tutorials/views/hello-formstuff.html#CustomButton

+0

Cảm ơn, nhưng đệm sẽ thêm khoảng trống bên trong vùng nút, nói khoảng cách giữa cạnh và văn bản của nút. –

+0

hãy thử điều này: setGravity (int): \t Chỉ định cách căn chỉnh văn bản theo trục x và/hoặc trục của chế độ xem khi văn bản nhỏ hơn chế độ xem. – jsp

8

Hãy thử điều này:

//Assuming your button is in a LinearLayout as stated 
LinearLayout.LayoutParams params = myButton.getLayoutParams(); 
params.setMargins(0, 0, 0, 0) //left, top, right, bottom 
myButton.setLayoutParams(params); 
+0

cũng hoạt động, ngoại trừ setLayoutParams là vô ích. và getLayoutParams có thể rỗng. và làm thế nào để bạn biết nó là một LinearLayout.LayoutParams rằng nút có? – njzk2

+2

Tôi không viết một chương trình để vượt qua kiểm tra ở đây, đó là một ý tưởng chung về những gì được yêu cầu. Như tôi đã nói trong phần bình luận, tôi cho rằng nút của anh ta nằm trong LinearLayout, như anh ta đã nói trong bài viết gốc của anh ấy. Trong liên kết này: http://developer.android.com/reference/android/view/View.html#getLayoutParams(), nó được thông báo rằng 'Khi Chế độ xem được đính kèm với một ViewGroup gốc, phương thức này không được trả về giá trị rỗng' . Ergo, nó sẽ không được null trong trường hợp này. – kcoppock

+0

@kcoppock, Cảm ơn bạn, tôi nghĩ bạn đúng rằng nó sẽ không trả về giá trị rỗng, theo giả định của bạn là nó nằm trong LinearLayout. Nhưng, vì nút được thêm vào bố cục đó sau; trong trường hợp này, nó trả về null. Cảm ơn tất cả! –

3
MarginLayoutParams params = (MarginLayoutParams) vector8.getLayoutParams(); 
params.width = 200; params.leftMargin = 100; params.topMargin = 200; 
vector8.setLayoutParams(params); 

Cần sử dụng loại: MarginLayoutParams

+0

điều này hữu ích cho tôi –

0

sử dụng mã này để thiết lập lề khi chạy

LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) btnContainer.getLayoutParams(); 
     params.setMargins(5, 50, 10, 0); //left, top, right, bottom 
     view_whwre_set_margin.setLayoutParams(params); 
Các vấn đề liên quan