-1

我对 android 很陌生,我试图根据用户在另一个活动的 edittext 中输入的字符串长度,将许多 edittexts 动态添加到布局中。我将字符串从第一个活动传递到下一个活动,并为字符串中的每个字符垂直跨线性布局添加一个editText到布局。但不幸的是,这些编辑文本从屏幕的最左侧开始,并在添加时从左向右移动。无论单词中的字母数量如何,我都希望这些编辑文本处于中心位置。有谁知道我该怎么做?到目前为止,这是我基于否添加多个编辑文本的活动的代码。字符串中的字符数。

import java.util.ArrayList;
import java.util.List;

import eoin.hangman.R;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.EditText;
import android.widget.Toast;

public class GameScreen extends Activity {

 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.gscreen);


        Intent intent = getIntent();
        String word = intent.getExtras().getString("ans");
        int noofletters = word.length();
        View linearLayout =  findViewById(R.id.info);
       // char[] cArray = word.toCharArray();




          for(int i=0;i<noofletters;i++)
          {
                EditText editText = new EditText(this);
            LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT,
                    LayoutParams.WRAP_CONTENT);
            editText.setLayoutParams(params);
            ((ViewGroup) linearLayout).addView(editText);
            // editText.setText(cArray[i]);
          }
       }
}

我还尝试将字符串中的单个字符添加到每个编辑文本中,但这似乎对我也不起作用。任何帮助是极大的赞赏!

所以我编辑了我的代码。这就是我所做的。为编辑文本框创建单独的 edttxt.xml,然后我将其膨胀。在 gscreen.xml 中的 tablelayout 内已设置行的 tablelayout 中创建。它摆脱了以编程方式添加视图,这很好。我仍然想将字符串中的一个字符添加到每个edittext,但不能这样做。希望我能弄清楚。最主要的是我在学习。不过,我希望进展得更快一些。几乎忘记了我刚刚在 gscreen.xml 中的 tablerow 中使用 android:gravity="center_horizo​​ntal" 将编辑文本框居中。希望这将有助于将来的某人。

public class GameScreen extends Activity {

    @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.gscreen);


            Intent intent = getIntent();
            String word = intent.getExtras().getString("ans");   //get string from intent sent to this activity
            int noofletters = word.length();                     //no of letters in string which creates an edittext box for each character.




            LayoutInflater  edit_inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View insertpoint = findViewById(R.id.tablerow);


              for(int i=0;i<noofletters;i++)
              {
                  EditText edtview = (EditText)edit_inflater.inflate(R.layout.edtxt,null);  
                  ((ViewGroup) insertpoint).addView(edtview);

              }
4

2 回答 2

1

android:layout_gravity="center_horizontal"参数就是你需要的。

虽然您可以从代码中设置它,但我建议您制作一个包含 EditText 的 XML 布局文件,然后使用.inflate()它而不是从代码中创建一个新的 EditText。这会将表示与逻辑分开,并且更容易通过 XML 更改外观。

于 2012-07-08T14:00:12.410 回答
0

试试这个解决重力问题

 LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT,
                        LayoutParams.WRAP_CONTENT,Gravity.CENTER_HORIZONDAL);

对于编辑文本

editText.setText(word[i], TextView.BufferType.EDITABLE);

在 for 循环内

于 2012-07-08T14:04:56.087 回答