Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.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
Java 即使没有代码错误,编辑文本也不会显示在我的设备上_Java_Android_Android Studio - Fatal编程技术网

Java 即使没有代码错误,编辑文本也不会显示在我的设备上

Java 即使没有代码错误,编辑文本也不会显示在我的设备上,java,android,android-studio,Java,Android,Android Studio,如果我能在这方面得到一些帮助,我会非常高兴,基本上我是在youtube上学习一些教程,因为我是android的完全初学者,而不是java tho。基本上代码工作正常,没有可见的错误,但当我运行它时,它不会被显示。需要注意的是,用户界面是用java设计的,而不是XML 代码: 此外,我的btn实际上正在显示,我感兴趣的是为什么我的用户名EditText没有显示,请帮助更改为- drawUsername = new RelativeLayout.LayoutParams( R

如果我能在这方面得到一些帮助,我会非常高兴,基本上我是在youtube上学习一些教程,因为我是android的完全初学者,而不是java tho。基本上代码工作正常,没有可见的错误,但当我运行它时,它不会被显示。需要注意的是,用户界面是用java设计的,而不是XML

代码:

此外,我的btn实际上正在显示,我感兴趣的是为什么我的用户名EditText没有显示,请帮助更改为-

drawUsername = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.WRAP_CONTENT,
           RelativeLayout.LayoutParams.WRAP_CONTENT
        );

为什么<代码>水平居中或垂直居中是规则,您需要至少设置一些要绘制的宽度和高度。这是您为按钮所做的操作,但您没有为编辑文本所做的操作发生的情况是由于您的抽屉名称的RelativeLayout.LayoutParams

如果查看已创建的RelativeLayout.LayoutParams:

RelativeLayout.LayoutParams drawBtn = new RelativeLayout.LayoutParams(
         RelativeLayout.LayoutParams.WRAP_CONTENT, 
         RelativeLayout.LayoutParams.WRAP_CONTENT);
drawBtn.addRule(RelativeLayout.CENTER_HORIZONTAL);
drawBtn.addRule(RelativeLayout.CENTER_VERTICAL);

RelativeLayout.LayoutParams drawUsername = new RelativeLayout.LayoutParams(
        RelativeLayout.CENTER_HORIZONTAL,
        RelativeLayout.CENTER_VERTICAL);
drawUsername.addRule(RelativeLayout.ABOVE, btn.getId());
drawUsername.addRule(RelativeLayout.CENTER_HORIZONTAL);
注意到区别了吗? LayoutParams构造函数接受一个int值:

  • 匹配父项=-1

  • 包装内容=-2

  • 任何其他int值

如果它是-1或-2,构造函数将执行特殊操作,但是如果它是任何其他整数值,它将简单地将宽度和高度调整为该大小

如果您查看由水平中心和垂直中心表示的int值,您将看到它的值为14和15。因此,LayoutParams构造函数将看到这一点,并简单地创建大小为14和15的视图,这两个视图太小而不可见


解决方法是用WRAP_CONTENT替换drawUsername LayoutParams构造函数。

首先,您的答案给人的印象是,尽管其int值太小,但使用“水平中心”是有效的。“水平中心”或“垂直中心”都不是此参数的有效参数。这里唯一的巧合是,CENTER_VERTICAL和CENTER_VERTICAL都是整数,意外地不会给出任何类型转换或无效参数错误。谢谢你的快速回复,这也帮助了我@AmitK.Saha肯定不喜欢你从“首先”开始的方式。但是没有,我的回答没有给人这样的印象,即水平中心是有效的。相反,它只是简单地说,任何整数值都可以使用,无论是普通整数还是常量整数。我还解释了为什么WRAP和MATCH不同于其他整数值,以及如果传入另一个整数值会发生什么。与其说水平居中并不意味着这一点,更重要的是让他们知道这是可能的,但这样做会有后果。“他们将被视为常数。”杰基,如果我的评论不礼貌,我诚挚的道歉。再次抱歉,太棒了!感谢您的快速帮助!这正是问题所在,我没有注意到我没有在drawUsername构造函数中包装w和h
RelativeLayout.LayoutParams drawBtn = new RelativeLayout.LayoutParams(
         RelativeLayout.LayoutParams.WRAP_CONTENT, 
         RelativeLayout.LayoutParams.WRAP_CONTENT);
drawBtn.addRule(RelativeLayout.CENTER_HORIZONTAL);
drawBtn.addRule(RelativeLayout.CENTER_VERTICAL);

RelativeLayout.LayoutParams drawUsername = new RelativeLayout.LayoutParams(
        RelativeLayout.CENTER_HORIZONTAL,
        RelativeLayout.CENTER_VERTICAL);
drawUsername.addRule(RelativeLayout.ABOVE, btn.getId());
drawUsername.addRule(RelativeLayout.CENTER_HORIZONTAL);