我的应用程序中有一个按钮。我想以编程方式更改其位置。我在XML中创建了一个按钮,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button android:text="@+id/Button01"
android:id="@+id/Button01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="50px"
android:layout_marginTop="10px"
>
</Button>
</LinearLayout>
假设我想将按钮的位置设置为左起100px(如layout_marginLeft =“100px”)。我该如何以编程方式完成?请帮我解决问题。
答案 0 :(得分:8)
卢克,使用
RelativeLayout.LayoutParams rel_btn = new RelativeLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
rel_btn.leftMargin = myXPosition;
rel_btn.topMargin = myYPosition;
rel_btn.width = buttonW;
rel_btn.height = buttonH;
myButton.setLayoutParams(rel_btn);
答案 1 :(得分:6)
您需要获取视图并转换为Java对象,然后在其上调用setPadding
。
这样的事情可以解决
Button myBtn;
myBtn = (Button) findViewById(R.id.Button01);
myBtn.setPadding(0,100,0,0);
在这里阅读更多内容: https://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html
答案 2 :(得分:2)
您不能将setMargin()
与btn一起使用,将其与LayoutParams一起使用,然后btn.setLayoutParams(params);
答案 3 :(得分:0)
使用Kotlin
,您可以使用以下内容:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val btnTag = Button(this).apply {
text = "Done"
setOnClickListener { finish() }
}
// btnTag.setOnClickListener { this.finish() }
val lp = RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT).apply {
addRule(RelativeLayout.ALIGN_PARENT_BOTTOM)
addRule(RelativeLayout.ALIGN_PARENT_RIGHT)
}
main_layout.addView(btnTag, lp)
}
注意:布局应为RelativeLayout