((Android studio-Java)如何在约束布局中以编程方式移动视图(按钮)?

问题描述 投票:0回答:1

我正在尝试创建一个简单的时间表,(我是初学者)。我为7天24小时的时间表创建了一个基本布局,我的想法是通过编程方式插入按钮,通过操纵按钮的位置和宽度在正确的时间和持续时间上覆盖时间表,以便在单击时显示任务保存在下面的文本视图中,如下所示:

Timetable layout

我知道如何创建按钮,但是经过数小时的寻找工作方法以将其大小和位置更改为所需值的尝试却没有成功,我在这里寻求帮助。

作为测试,我在设计视图中制作了一个带有预设约束视图的新空项目,并尝试在其中放置一个按钮并将其移动。这是代码:


import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.constraintlayout.widget.ConstraintSet;

import android.os.Bundle;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ConstraintLayout constraintLayout01 = (ConstraintLayout)findViewById(R.id.constraintLayout01); //a constraint layout pre-made in design view

        Button btn = new Button(this);
        btn.setLayoutParams(new ConstraintLayout.LayoutParams(ConstraintLayout.LayoutParams.WRAP_CONTENT, ConstraintLayout.LayoutParams.WRAP_CONTENT));
        constraintLayout01.addView(btn);

        int x = 100;
        int y = 5;
        ConstraintSet set = new ConstraintSet();
        set.connect(btn.getId(), ConstraintSet.LEFT, constraintLayout01.getId(), ConstraintSet.LEFT, x);
        set.connect(btn.getId(), ConstraintSet.TOP, constraintLayout01.getId(), ConstraintSet.TOP, y);
    }
}

该按钮出现在约束视图中,但是无论我如何更改x和y,都不会改变位置。我究竟做错了什么?另外如何更改尺寸?

java android android-studio layout android-constraintlayout
1个回答
0
投票

而不是使用此行:

Button btn = new Button(this);

您应该直接从XML获取按钮。例如:如果在XML文件中,您的按钮名为btn1。然后,使用此:

Button btn = (Button)findViewbyId(R.id.btn1);

然后,尝试执行操作。应该可以。

© www.soinside.com 2019 - 2024. All rights reserved.