如何将焦点放在ViewSwitcher中的editText中

时间:2014-06-05 19:11:40

标签: android android-edittext focus

我有一个包含大量ViewSwitcher的表单,它将TextView更改为带有clic的EditText。

事情是我必须要2次才能插入值:以下是截图:

The first step, field is a textview The second step, field is a edittext but without focus The last step, field is OK

好事不会超越第二个国家......

这是我的代码。

<TableRow
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_vertical" >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical|right"
                android:text="Colonia:"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:textColor="@color/android_blue" />

            <ViewSwitcher
                android:id="@+id/vs2"
                android:layout_width="match_parent"
                android:layout_height="50dp"
                android:gravity="center_vertical" >

                <TextView
                    android:id="@+id/txt_colonia"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:clickable="true"
                    android:onClick="TextViewClicked"
                    android:paddingLeft="12dp"
                    android:text="Colonia"
                    android:textAppearance="?android:attr/textAppearanceLarge" />

                <EditText
                    android:id="@+id/et_colonia"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:focusableInTouchMode="true"
                    android:text="Colonia 13"
                    android:textAppearance="?android:attr/textAppearanceLarge" />
            </ViewSwitcher>
        </TableRow>

这是java部分:

switcher = (ViewSwitcher) findViewById(switchId);
    View newView = switcher.getNextView();

    if (newView instanceof TextView) {
        ((TextView) newView).setText(valor);
    } else if (newView instanceof EditText) {
        ((EditText) newView).setText(valor);
        ((EditText) newView).setFocusableInTouchMode(true);
        ((EditText) newView).requestFocus();
              getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

    }
    switcher.showNext();

2 个答案:

答案 0 :(得分:0)

尝试切换到edittext然后格式化,

viewswitcher.showNext();
edittext.requestFocus();
edittext.setSelection(edittext.getText().length());

答案 1 :(得分:0)

试试这个:

如果你是一个片段

helper

如果您正在参加活动

switcher.showNext();
edittext.requestFocus();
InputMethodManager inputMethodManager = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
            inputMethodManager.showSoftInput(edittext, 1);

有点晚了,但可能会帮助别人......