Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.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/android/188.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 如何在Android中通过编程方式创建一定数量的相邻编辑文本?_Java_Android - Fatal编程技术网

Java 如何在Android中通过编程方式创建一定数量的相邻编辑文本?

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

我试图在不使用XML的情况下以编程方式创建大量编辑文本,但在尝试这一点时遇到了一些问题。下面是一段代码:

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,类似这样的值。