gpt4 book ai didi

android - 如何在 TableLayout 中添加 editText.addTextChangedListener

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:17:07 24 4
gpt4 key购买 nike

我的工作环境是Eclipse heliose,Android 1.6

我创建了一个成功添加列和行的 tableLayout,每个单元格都有一个 textView 和一个 EditText,我在访问每个单元格时遇到问题,需要将 addTextChangedListener 添加到单元格内的每个 editText。所以我需要将英文文本更改为印度文本。请提出解决方案

/**
* Here we are going to define the grid The Grid has 1. grid's value in the
* particular position 2.
*/

public void setGrid() {

String questionNumber[] = null;

Typeface fontface = Typeface.createFromAsset(getAssets(), "fonts/padmaa.ttf");
/*
* Table layout for the crossword elements
*/
TableLayout tableLayout = (TableLayout) findViewById(R.id.crosswordTableLayout);
tableLayout.setGravity(Gravity.TOP);
tableLayout.setBackgroundColor(Color.WHITE);
tableLayout.setScrollContainer(true);

for (int i = 0; i < sizeOfGrid; i++) {
/*
* This table row params is used to set the layout params alone we
* are not going to use this anywhere
*/
TableRow.LayoutParams tableRowParams = new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
tableRowParams.setMargins(1, 1, 1, 1);
tableRowParams.height = 30;
tableRowParams.gravity = Gravity.TOP;

/*
* Defining the row element for the crossword
*/
TableRow tableRow = new TableRow(this);
tableRow.setBackgroundColor(Color.WHITE);
tableRow.setPadding(1, 0, 0, 0);
tableRow.setGravity(Gravity.TOP);
tableRow.setLayoutParams(tableRowParams);

for (int j = 0; j < sizeOfGrid; j++) {

/*
* (1).Here we are defining headerTextView to set the clue
* numbers.
* 2).columnEditText = a edit text view used to get the user
* i/p data
*/
TextView headerTextView = new TextView(this);
columnEditText = new EditText(this);

headerTextView.setGravity(Gravity.TOP);
headerTextView.setTextSize(10);
headerTextView.setEnabled(false);
headerTextView.setHeight(30);
headerTextView.setWidth(10);
headerTextView.setTextColor(Color.BLACK);

/* Override the edittext that has been created */
columnEditText = (EditText) getLayoutInflater().inflate(R.layout.tablexml, null);
columnEditText.setHeight(30);
columnEditText.setWidth(25);
/*
* LinearLayout to arrange the two text view in a vertical
* position
*/
LinearLayout headerLinearLayout = new LinearLayout(tableRow.getContext());
headerLinearLayout.setOrientation(LinearLayout.VERTICAL);
headerLinearLayout.addView(headerTextView);

/*
* LinearLayout to arrange the first Linearlayout and Edit text
* in a horizontal position
*/
LinearLayout cellLinearLayout = new LinearLayout(tableRow.getContext());
cellLinearLayout.setOrientation(LinearLayout.HORIZONTAL);
cellLinearLayout.addView(headerLinearLayout);
cellLinearLayout.addView(columnEditText);
/*
* Here we are setting the table's vertical border by some
* workaround methods
*/
cellLinearLayout.setLayoutParams(tableRowParams);
/*
* the column with complete black
*/
if (cellValueArr[i][j] == null) {
columnEditText.setBackgroundColor(Color.BLACK);
headerTextView.setBackgroundColor(Color.BLACK);
headerTextView.setGravity(Gravity.TOP);
tableRow.setBackgroundColor(Color.BLACK);
columnEditText.setEnabled(false);
} else {
/*
* column with values and question numbers
*/
tableRow.setBackgroundColor(Color.BLACK);
if (quesNumArr[i][j] == null) {
columnEditText.setBackgroundColor(Color.WHITE);
headerTextView.setBackgroundColor(Color.WHITE);
} else if (quesNumArr[i][j] != null) {
/*
* column without question number
*/
questionNumber = quesNumArr[i][j].split("~");
quesArrList.add(questionNumber[1]);
headerTextView.setText(questionNumber[1]);
headerTextView.setTextColor(Color.BLACK);
headerTextView.setBackgroundColor(Color.WHITE);
columnEditText.setBackgroundColor(Color.WHITE);
}

}
columnEditText.setId(i);
headerTextView.setId(i);

/* add the linear layout to the row values */
tableRow.addView(cellLinearLayout);

int childCount = tableRow.getChildCount();
System.out.println("Child Count ::" + childCount);

LinearLayout linearChild = (LinearLayout) tableRow.getChildAt(columnEditText.getId());
colText = (EditText) linearChild.getChildAt(1);
System.out.println("GET ID " + linearChild.getChildAt(1).getId());

colText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence seq, int start, int before, int count) {
// TODO Auto-generated method stub
if (seq.length() > 0 & before == 0) {
final String charSequence = String.valueOf(seq);
final String engChar = String.valueOf(seq.charAt(seq.length() - 1));
println("GUJ :: currentlatin ===> " + engChar + " :: charSequence ==>" + seq);
// Method For Type Char
List softList = conv.getSoftKeyPressForChar(engChar, getApplicationContext(), seq);
charSeq = (String) softList.get(0);
Typeface fontface1 = Typeface.createFromAsset(getApplicationContext().getAssets(), "fonts/padmaa.ttf");
colText.setTypeface(fontface1, Typeface.NORMAL);
colText.setText(charSeq);
// for placing the cursor position
colText.clearFocus();
colText.requestFocus();

}
}

@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// TODO Auto-generated method stub

}

@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
System.out.println("AFTER TEXT CHANGE");
}
});

}
/* add the row values to the table layout */
tableLayout.addView(tableRow);
}
}

最佳答案

我没有从整体上看代码。但是根据我最初的理解,您可以通过以下任何一种方式进行操作,

  1. 正如之前有人提到的,选择 GridView 。从问题的最后一条评论中我无法充分说明这个问题,但如果它有一些滚动问题,你可以尝试将布局边距底部设置为大约 5 dp,这样它就不会被裁剪(如果那是你的意思)

  2. 继续表布局,创建一次 TextWatcher() 并将其按顺序添加到循环中。这可能很好,如果您可以为每个元素设置 Id 或 setTag,例如,首先 editText 获取名称,“editText1”,然后是“editText2”,依此类推。所以在一个循环中,你可以根据循环索引访问每个元素。

关于android - 如何在 TableLayout 中添加 editText.addTextChangedListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10118171/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com