1

我有以下布局:

<TableLayout 
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:stretchColumns="*">

    <TableRow
        android:clickable="true"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:descendantFocusability="beforeDescendants">

        <TextView
            android:text="Login:"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>

        <EditText
            android:id="@+id/password"
            android:background="@null"
            android:duplicateParentState="true"
            android:inputType="text"
            android:maxLines="1"
            android:singleLine="true"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>           
    </TableRow>
</TableLayout> 

EditText占据屏幕宽度的一半,我希望它在TableRow点击时获得焦点。我该如何设置呢?有没有可能没有任何额外的代码?

4

1 回答 1

1

我最终实现了一个监听器。我稍微改变了布局:

<TableRow
    android:onClick="focusChildEditText">
    ...

    <EditText
        ...
        android:tag="focusable"/>  

</TableRow>

并使用了以下监听器:

public void focusChildEditText(View view) {
    try {
        EditText editText=((EditText) ((ViewGroup) view).findViewWithTag("focusable"));
        if (editText!=null) 
            editText.requestFocus();
    } catch (ClassCastException e) {}
}

一切都按我的需要工作。

于 2012-12-05T19:11:16.947 回答