Java 如何在Android中通过编程方式创建一定数量的相邻编辑文本?
我试图在不使用XML的情况下以编程方式创建大量编辑文本,但在尝试这一点时遇到了一些问题。下面是一段代码:Java 如何在Android中通过编程方式创建一定数量的相邻编辑文本?,java,android,Java,Android,我试图在不使用XML的情况下以编程方式创建大量编辑文本,但在尝试这一点时遇到了一些问题。下面是一段代码: private void createEditText(int l, int topMargin){ ViewGroup.MarginLayoutParams vlp = (ViewGroup.MarginLayoutParams) editText.getLayoutParams(); LinearLayout.LayoutParams layoutParams = new
private void createEditText(int l, int topMargin){
ViewGroup.MarginLayoutParams vlp = (ViewGroup.MarginLayoutParams) editText.getLayoutParams();
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(vlp.width, vlp.height);
layoutParams.setMargins((vlp.leftMargin + l) - vlp.width - vlp.height - 25, topMargin, vlp.rightMargin, vlp.bottomMargin);
final EditText newEditText = new EditText(this);
newEditText.setBackgroundResource(R.drawable.rounded_edittext);
newEditText.setLayoutParams(layoutParams);
linearLayout.addView(newEditText);
}
private void numberOfEditTexts(){
String[] words = Answers.answers[getCurrentLevel()].split(" ");
int l = 0, topMargin = 450;
for(int i = 0; i < words.length - 1; i++){
createEditText(l, topMargin);
l += editText.getLayoutParams().width + 5;
if(i == 0) topMargin -= 560;
}
}
private void createEditText(int l,int topMargin){
ViewGroup.MarginLayoutParams vlp=(ViewGroup.MarginLayoutParams)editText.getLayoutParams();
LinearLayout.LayoutParams LayoutParams=新的LinearLayout.LayoutParams(vlp.width,vlp.height);
layoutParams.setMargins((vlp.leftMargin+l)-vlp.width-vlp.height-25,topMargin,vlp.rightMargin,vlp.bottomMargin);
最终编辑文本newEditText=新编辑文本(本);
newEditText.setBackgroundResource(R.drawable.rounded_edittext);
newEditText.setLayoutParams(layoutParams);
linearLayout.addView(newEditText);
}
私有void numberofeditText(){
String[]words=Answers.Answers[getCurrentLevel()]拆分(“”);
int l=0,topMargin=450;
for(int i=0;i
第一个函数创建一个编辑文本,我向它发送两个参数,其中topMargin是定义编辑文本高度坐标的变量。因此,问题在于,由于屏幕尺寸的不同,这些编辑文本在不同的设备上会显示不同。
我怎样才能修好它?如何避免手动设置位置
提前谢谢。我想你需要知道屏幕的宽度和长度。使用屏幕大小的百分比作为边距大小 要按像素获取屏幕大小
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
您的边距可以是高度的某个百分比:例如屏幕高度的5%或10%。然后它是可调的。您的意思是获取屏幕大小的值并将其发送到setMargins()函数以替换topMargin?我已经尝试过了,但是setMargins()函数只接收整数作为参数,因此我无法获取高度变量的百分比。当调用createEditText(int l,int topMargin)时,不要传入固定的整数,而是尝试传入screenHeight*5/100,类似这样的值。