gpt4 book ai didi

java - Android 中按钮的边距未以编程方式设置

转载 作者:行者123 更新时间:2023-12-02 01:14:00 26 4
gpt4 key购买 nike

我有以下代码来生成带有设置文本、onClick 命令(或多或少)、高度、宽度和边距的按钮对象

    private Button generateButton(String text, char command, int height, int width, int left, int top){
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(getDP(width),getDP(height));
lp.setMargins(getDP(left),getDP(top),0,0);
Button button = new Button(this.getContext());
button.setText(text);
button.setLayoutParams(lp);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d("Command",""+ command);

}
private char command;
private View.OnClickListener init(char var){
command = var;
return this;
}
}.init(command));
return button;
}

随着这个方法获取dp

    private int getDP(int size){
return (int) (size * this.getContext().getResources().getDisplayMetrics().density);
}

但是当我运行应用程序时,按钮具有正确的高度和宽度,以及正确的文本和 onclick 操作,但它们没有边距,它们都挤在一个角落

根据 Android studio 中的布局检查器的 View 层次结构

DecorView
LinearLayout
FrameLayout
FitWindowLinearLayout
ContentFrameLayout
CoordinatorLayout
ViewPager
ConstraintLayout
ConstraintLayout
Buttons

根据我在网上阅读的内容,LayoutParams 必须与布局来自同一类,就像 LinearLayout.LayourParams 或 ConstraintLayout.LayoutParams 一样,并且我已经尝试了所有对我有意义的布局类型,但仍然有效无边距

值得注意的是,这是在 fragment 中

最佳答案

对于 ConstraintLayout 的 subview ,您需要添加水平和垂直约束。否则布局会不知道怎么放置,就把它们放在左上角。

您可以使用ConstraintLayout.LayoutParams,并通过以下方式设置约束

lp.leftToLeftlp.leftToRight 和类似方法 here

例如,如果您想将这些按钮垂直地一个接一个地放置,您将把每个按钮水平限制到父级,垂直限制到前一个按钮。

关于java - Android 中按钮的边距未以编程方式设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58927917/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com