我对 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_horizontal" 将编辑文本框居中。希望这将有助于将来的某人。
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);
}