以编程方式在Android中设置按钮位置

11

我的应用程序中有一个按钮,我想通过编程来更改它的位置。我已经在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>

假设我想将按钮的位置设置为距离左侧100像素(就像layout_marginLeft="100px"一样),我该如何以编程的方式实现?请帮助我解决这个问题。


内边距和外边距不是同一个东西...这个帖子可能是你要找的。 - Mojo Risin
让我来说重点... 实际上我的布局包含9个按钮...因此一些按钮根据条件可见和不可见...所以我想通过编程方式对齐(向左或向右移动)它...请帮我。 - Paresh Mayani
看一下这个答案。它清楚地展示了如何设置按钮的边距。https://dev59.com/Pk3Sa4cB1Zd3GeqPvG9u#4594374 - MindWire
4个回答

12
卢克,使用这个。
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);

6

它不起作用了... 在 setMargins 函数下显示红线(错误)。 我正在使用 Android 1.5。 - Paresh Mayani
我也尝试过btnTest.setPadding(100,0,0,0); 但它会使按钮的宽度为100,文本将显示在右侧。但仍然不起作用。 - Paresh Mayani
如果我将“setPadding(100,0,0,0)”设置为以下布局,则可以正常工作:LinearLayout l1 =(LinearLayout)findViewById(R.id.LinearLayout01); l1.setPadding(120,0,0,0);非常感谢...@Pentium - Paresh Mayani

2

您不能直接使用setMargin()方法来设置按钮的边距,需要先使用LayoutParams设置参数,然后再使用btn.setLayoutParams(params);方法来设置。


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接