清除焦点requestFocus()都不能与EditText一起使用

时间:2013-06-12 11:53:42

标签: android focus android-edittext spinner

我需要从编辑文本中清除焦点并将其放在另一个元素上,问题是焦点始终在编辑文本上,无论我做什么,它都不会失去焦点。

我想在单击软键盘的下一个按钮时更改焦点,因此我使用编辑器选项监听器来执行此操作,因为键盘是隐藏的,所以工作正常。

public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
    if (actionId == EditorInfo.IME_ACTION_NEXT) {
    InputMethodManager imm = 
    (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(tviewNombreNC.getWindowToken(), 0);
    tviewNombreNC.clearFocus();
    spinnerNuevaConf.requestFocus();
            }
            return false;
        }

我尝试过使用requestFocus(),同时使用clearFocus和两者,但没有做任何事情。如果编辑文本从未聚焦,其他元素可以获得焦点,但是当ET获得它时,其他元素无法捕获它。

布局

<TextView android:text="@string/nuevaconfiguracion_titulo"
android:textSize="25sp" android:textColor="@android:color/black"
android:layout_width="wrap_content" android:layout_height="wrap_content"   
android:textStyle="bold"/>

<ImageView  android:src="@drawable/barra_verde"
android:layout_width="match_parent"
android:layout_height="5dp" android:scaleType="fitXY"/>

<LinearLayout android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:layout_marginTop="5dp">

    <ImageView android:src="@drawable/barra_verde" 
    android:layout_width="4dp" android:layout_height="30dp"
    android:scaleType="fitXY" android:layout_marginRight="5dp"       
    android:layout_gravity="center_vertical" android:visibility="visible"
    android:id="@+id/view_nuevaconfiguracion_1_nombre_focus"/>

    <TextView android:text="@string/nuevaconfiguracion_1_nombre" 
    android:textSize="18sp" android:textColor="@android:color/black"
    android:layout_marginRight="5dp" android:layout_width="72dp" 
    android:layout_height="wrap_content"/>

    <EditText android:layout_width="match_parent" android:layout_height="40dp" 
    android:id="@+id/view_nuevaconfiguracion_usuario"
    android:background="@android:drawable/editbox_background_normal" 
    android:textColor="@android:color/black" android:textSize="18sp"
    android:singleLine="true" android:imeOptions="actionNext" 
    android:nextFocusDown="@+id/view_nuevaconfiguracion_moneda"/>

</LinearLayout>

<LinearLayout android:layout_width="match_parent" 
android:layout_height="wrap_content" android:layout_marginTop="5dp">

    <ImageView android:src="@drawable/barra_verde" android:layout_width="4dp" 
    android:layout_height="30dp"
    android:scaleType="fitXY" android:layout_marginRight="5dp" 
    android:layout_gravity="center_vertical" android:visibility="invisible"
    android:id="@+id/view_nuevaconfiguracion_1_divisa_focus"/>

    <TextView android:textSize="18sp" android:textColor="@android:color/black" 
    android:text="@string/nuevaconfiguracion_1_divisa" 
    android:layout_marginRight="5dp" android:layout_width="72dp" 
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical"/>

    <Spinner android:layout_width="match_parent" android:layout_height="40dp" 
    android:id="@+id/view_nuevaconfiguracion_moneda"
    android:background="@android:drawable/editbox_background_normal" 
    android:dropDownVerticalOffset="5dp"/>

</LinearLayout>

1 个答案:

答案 0 :(得分:0)

根据this,您需要在spinnerNuevaConf.performClick();之后添加spinnerNuevaConf.requestFocus();并使微调器具有焦点。我试过这个并且它通常有效,但它看起来不太好,因为微调器被放置在屏幕中间的某个位置,因为键盘不会立即被隐藏...我不知道是否有解决方案。