2011-08-17 58 views

回答

18

使用按钮元素的layout_margin属性。这不行吗?

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

编辑

当创建Java中的按钮,的LayoutParams用于指定页边距等。

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

您使用的LayoutParams必须与您添加按钮的布局相匹配(请参阅http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html)。对于LinearLayout,使用LinearLayout.LayoutParams并相应地设置* Margin字段。

+0

我是新来的Android的! 我很困惑,如果我有它在XML中,那么我怎样才能使用 动态创建? 我的代码看起来像这样, btnSend = new Button(this); btnSend.setText(“Send ...”); btnSend.setBackgroundResource(R.drawable.red_button); btnSend.setOnClickListener(新View.OnClickListener(){ \t \t \t \t \t \t公共无效的onClick(视图v){ \t \t \t \t // TODO自动生成方法存根 \t \t \t \t \t \t \t \t //代码这里... \t \t \t \t \t \t \t} \t \t}); –

+0

我编辑我的帖子有关动态按钮创建的信息 – njzk2

+2

非常感谢您的帮助。我很抱歉, 它不会做我想要的东西! 说, LinearLayout.LayoutParams的lParam =新LinearLayout.LayoutParams( \t \t LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams。包装内容 ); lParam.setMargins(20,20,20,20); 它为LinearLayout添加了余量。不是按钮。例如,它有两个并排的按钮,它不会*增加按钮之间的空间!这是我的目标! 谢谢! –

8

试试这个:

//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

也适用,除了setLayoutParams是无用的。和getLayoutParams可能为空。你怎么知道它是一个LinearLayout.LayoutParams按钮? – njzk2

+2

我不是在编写一个程序来通过测试,这是一个普遍的想法。正如我在评论中所述,我假设他的按钮位于LinearLayout中,正如他在其原始文章中所述。在这个链接中:http://developer.android.com/reference/android/view/View.html#getLayoutParams(),它声明:“当一个视图附加到父ViewGroup时,这个方法不能返回null 。在这种情况下,它不会为空。 – kcoppock

+0

@ kcoppock, 谢谢,我认为你是正确的,它不会返回null,根据你的假设,它在LinearLayout中。但是,由于该按钮稍后会添加到该布局,在这种情况下,它返回null。谢谢你们! –

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

需要在使用的类型:MarginLayoutParams

+0

这对我有帮助 –

0

使用这个代码在运行时设置的容

LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) btnContainer.getLayoutParams(); 
     params.setMargins(5, 50, 10, 0); //left, top, right, bottom 
     view_whwre_set_margin.setLayoutParams(params);