膨胀的EditText视图无法选择

时间:2016-04-07 13:19:00

标签: android

正在膨胀的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视图时,输入焦点将保留在前一个焦点上。

2 个答案:

答案 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)