[英]How to programmatically set drawableRight on Android Edittext?
[英]How to Set Id in EditText programmatically in Android
我在 GridLayout 上有一個名為 addnewTask 的按鈕。 創建此按鈕時,它將創建一個 EditText。
private GridLayout gridLayout;
int rowIndex = 3;
int colIndex = 1;
int i=0;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_set_task);
gridLayout = (GridLayout) findViewById(R.id.taskLayout);
}
此函數在單擊按鈕時創建 EditText -->
public void addView(View view) {
i++;
String tname = "task" + Integer.toString(i);
EditText editText = new EditText(this);
GridLayout.LayoutParams param = new GridLayout.LayoutParams();
param.height = ViewGroup.LayoutParams.WRAP_CONTENT;
param.width = GridLayout.LayoutParams.MATCH_PARENT;
param.rowSpec = GridLayout.spec(rowIndex);
param.columnSpec = GridLayout.spec(colIndex);
editText.setLayoutParams(param);
if (rowIndex > 3) {
editText.setTag(tname);
}
gridLayout.addView(editText);
rowIndex++;
}
我的問題是我想設置我創建的 EditText 的 android:id。
像這樣:單擊按鈕時,將在第 3 行第 1 列和 ID 名稱 task1 中創建 EditText。
再次單擊該按鈕時,將創建另一個 EditText,位於第 4 行第 1 列和 ID 名稱為 task2。
再次單擊按鈕時,會在第 5 行第 1 列中創建另一個 EditText,id 名稱為 task3。
等等.....
android中的ID不是字符串 - 它們總是數字。 即使您使用xml @+id/textId
,也會為此文本生成一個數字。 你可以在你的R
文件中看到它。
您可以做的是使用editText.setId(int)
方法為編輯文本分配id。 如果您希望能夠輕松參考編輯文本,您可以:
按順序分配id:1,然后是2,3等。然后項目的id將是(row-1) * <columnsCount> + column)
(所以如果你有3列,那么第五行中的第二項將具有id 4 * 3 + 2)
創建Map<String, Integer>
類型的map字段,然后再按順序分配id,並將其保存。
String tname = "task" + Integer.toString(i);
EditText editText = new EditText(this);
editText.setId(i);
idsMap.put(tname, i);
然后通過調用idsMap.get("task3")
獲取edittext的id
第三個選項是在地圖中保持對EditText
引用:然后你有一個Map<String, EditText>
地圖,然后調用
String tname = "task" + Integer.toString(i);
EditText editText = new EditText(this);
editTextsMap.put(tname, editText);
您可以將這些編輯文本的引用保存在表示網格單元格的數組中。 像這樣聲明arraylist:
ArrayList<EditText> etArray = new ArrayList<>();
並在addView方法的末尾繼續引用數組列表中的EditText,如下所示:
etArray.add(i,edittext);
現在像這樣引用這些視圖:
etArray.get(i);
通過這種方式,您可以引用它們來訪問文本。
動態分配ID可能會導致問題,因為id是一個整數,並且您分配的ID可能會導致與系統分配的ID沖突到其他組件。
您不能將 id 設置為字符串。 您只能將整數指定為 Id。 但是如果你想使用 String 作為 id 以方便使用,那么 - 在 res/values/ids.xml 文件中
<item name="edit_text_hello" type="id"/>
然后將其用作:
edText.setId(R.id.edit_text_hello); 所以你可以做你需要的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.