Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓工作室利润变化_Android_Button_Margin - Fatal编程技术网

Android 安卓工作室利润变化

Android 安卓工作室利润变化,android,button,margin,Android,Button,Margin,我试着去研究,但我不知道是正面还是反面,因为我对这个太陌生了 我使用的是约束布局。 我有一个按钮,按钮1。 button1的底边距为10 有没有一个简单的方法,使它这样当我点击我的按钮,它会改变底部边缘为20 这是我的简单代码: button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (butt

我试着去研究,但我不知道是正面还是反面,因为我对这个太陌生了

我使用的是约束布局。 我有一个按钮,按钮1。 button1的底边距为10

有没有一个简单的方法,使它这样当我点击我的按钮,它会改变底部边缘为20

这是我的简单代码:

button1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (butt1){
                button1.setBackgroundResource(buttonpress2);
                butt1 = false;
            }else{
                button1.setBackgroundResource(buttonpress);
                butt1 = true;
            }
        }
    });
此外:


尝试使用ConstraintLayout.LayoutParams,如《开发人员指南》中所述

您可以这样做:

ConstraintLayout.LayoutParams params = new  ConstraintLayout.LayoutParams(
            LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.setMargins(left, top, right, bottom);
button1.setLayoutParams(params);

与其创建一个新的布局参数对象,不如用视图已有的对象实例化它。。。这样,它将保留您在xml中设置的所有属性,并在您在此处更改后更新

这样做

int marginInPixels = dpToPx(10);

public int dpToPx(int dp) {
    DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics();
    return Math.round(dp * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));     
}
ConstraintLayout.LayoutParams params = 
(ConstraintLayout.LayoutParams)button1.getLayoutParams();

params.topMargin = marginInPixels; 
button1.setLayoutParams(params);

当我尝试这一点时,它改变了我的按钮的形状,将其移动到右上角,我不知道如何调整它使其工作……感谢您的帮助!我真的很感激,即使我不能理解。这似乎是我能弄明白的。。。有没有办法只改变一个边距。。。?这种方式似乎将它们全部设置为0。是的,可以这样做,如果您想更改上边距,请使用以下选项:params.topMargin=10或对于左边距,请使用此params.leftMargin=12。谢谢!不确定这是否是一个优雅的解决方案,但这是我现在能处理的全部!非常感谢你的帮助!很高兴这对您有所帮助,这是一个小建议,您不应该以像素为单位设置边距值,因为它不适合不同的屏幕大小,而是使用此链接“”了解如何将dp值转换为像素,然后应用它。如果您仍然在,最后一个问题是。。。我有它,所以它会改变。。。但我原来的利润率似乎设定为10dp,而新的“20”似乎不在dp中。。。。思想?我还没问就回答了!
int marginInPixels = dpToPx(10);

public int dpToPx(int dp) {
    DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics();
    return Math.round(dp * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));     
}
ConstraintLayout.LayoutParams params = 
(ConstraintLayout.LayoutParams)button1.getLayoutParams();

params.topMargin = marginInPixels; 
button1.setLayoutParams(params);