正在膨胀的XML文件(matrix_cell.xml)。
<EditText
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/rect_edit_text"
android:textCursorDrawable="@drawable/cursor_black"
android:textColor="@color/colorAccent"
android:gravity="center_horizontal"
android:inputType="number"
android:layout_margin="1dp"
android:layout_weight="1" />
夸大视图的代码:
LayoutInflater inflater = LayoutInflater.from(this);
TableRow tableRow = new TableRow(this);
inflater.inflate(R.layout.matrix_cell, tableRow, true);
创建的EditText视图不可选,当单击EditText视图时,输入焦点将保留在前一个焦点上。
答案 0 :(得分:1)
向id
添加EditText
。
可以像
那样完成<EditText
android:id="@+id/edittext"
android:inputType="text"
...
...
/>
它应该解决你的问题。更重要的是,您是否使用任何布局并将EditText
作为其子项?必须这样做。您必须记住EditText
是一个视图,而不是Layout
。
充气程序在视图膨胀后,使用view.findViewById(R.id.edittext)
方法让EditText
工作。
<强>更新强>
正如Alexander Kulyakhtin中的this answer所说,
for(int i=0; i<((ViewGroup)v).getChildCount(); ++i) { View nextChild = ((ViewGroup)v).getChildAt(i); }
你可以得到孩子。正如我所说,使用nextChild.findViewById(R.id.edittext)
获取EditText
并使用它。
答案 1 :(得分:1)
在id
中添加xml
,因为@Sibidharan说。
<EditText
android:id="@+id/editText"
...
...
/>
在您的活动中,请确保您已将其初始化。
EditText editText= (EditText)findViewById(R.id.editText)