如果我能对此有所帮助,我将感到非常高兴,因为我是android上的完整初学者,而在Java tho上则不是很多,因此我基本上遵循youtube上的一些教程。基本上,代码工作正常,没有可见的错误,但是当我运行它时,它不会显示。重要的是要注意,用户界面是使用Java设计的,而不是基于XML的。
代码:
import android.annotation.SuppressLint;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.RelativeLayout;
import android.widget.Button;
import android.graphics.Color;
import android.widget.EditText;
import android.content.res.Resources;
import android.util.TypedValue;
public class MainActivity extends AppCompatActivity {
@SuppressLint("ResourceType")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Button btn = new Button(this);
EditText username = new EditText(this);
btn.setId(1);
username.setId(2);
RelativeLayout alayout = new RelativeLayout(this);
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;
drawUsername = new RelativeLayout.LayoutParams(
RelativeLayout.CENTER_HORIZONTAL,
RelativeLayout.CENTER_VERTICAL
);
drawUsername.addRule(RelativeLayout.ABOVE, btn.getId());
drawUsername.addRule(RelativeLayout.CENTER_HORIZONTAL);
drawUsername.setMargins(0,0,0, 15);
btn.setText("Entrar");
btn.setBackgroundColor(Color.RED);
alayout.setBackgroundColor(Color.GREEN);
btn.setBackgroundColor(Color.MAGENTA);
Resources r = getResources();
int px = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 200, r.getDisplayMetrics());
username.setWidth(px);
alayout.addView(btn, drawBtn);
alayout.addView(username, drawUsername);
setContentView(alayout);
}
}
此外,我的btn实际上正在显示,令我着迷的是为什么我的用户名EditText没有显示,请帮忙
答案 0 :(得分:0)
更改为-
drawUsername = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT
);
为什么? -CENTER_HORIZONTAL
或CENTER_VERTICAL
是规则,您需要至少设置一些要绘制的宽度和高度。那就是您为按钮所做的,但您没有为edittext做
答案 1 :(得分:0)
发生了什么事,是由于您的抽屉用户名使用了RelativeLayout.LayoutParams。
如果您查看已创建的RelativeLayout.LayoutParams:
fadeOut()
注意区别吗? LayoutParams构造函数采用int值:
MATCH_PARENT = -1
WRAP_CONTENT = -2
任何其他int值
如果它是-1或-2,则构造函数将执行特殊操作,但如果它是任何其他整数值,则将宽度和高度的大小简单地设置为该大小即可。
如果您查看由CENTER_HORIZONTAL和CENTER_VERTICAL表示的int值,您会看到它是14和15的值。因此,LayoutParams构造函数将看到该值,并简单地创建大小为14和15的视图,即太小而看不见。
解决方法是用WRAP_CONTENT替换drawUsername LayoutParams构造函数。