Android:RequestFocus / Text已更改

时间:2014-07-30 15:42:33

标签: android android-layout

目前在我的Android应用程序中,我试图允许用户在3个EditText框中输入数据。

我想让焦点在每个数据输入时自动从左向右改变。

我已经为第一个文本框执行了此操作,但我似乎无法将其添加到第二个和第三个框之间进行焦点更改。

如何添加此功能?

当前相关的活动代码段:

day = (EditText) findViewById(R.id.etEnterSpecificDay);
        month = (EditText) findViewById(R.id.etEnterSpecificMonth);
        year = (EditText) findViewById(R.id.etEnterSpecificYear);

String dayEntry= day.getText().toString() + "/";
            String monthEntry= month.getText().toString() + "/";
            String yearEntry= year.getText().toString();

@Override
    public void afterTextChanged(Editable s) {
       if (s.length() == 2) {
          month.requestFocus();
       }
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {
        // TODO Auto-generated method stub

    }



    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        // TODO Auto-generated method stub

}

对应的XML布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/tvSearchDate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=" Enter Date to search..."
        android:textSize="15dp" />

    <LinearLayout 
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

     <EditText
         android:id="@+id/etEnterSpecificDay"
         android:layout_width="0dp"
         android:layout_height="wrap_content"
         android:layout_marginLeft="2dp"
         android:layout_marginRight="2dp"
         android:layout_weight="1"
         android:hint=""
        android:imeOptions="actionNext"
        android:maxLength="2"
        >

    </EditText>

    <EditText
            android:id="@+id/etEnterSpecificMonth"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="2dp"
            android:layout_marginRight="2dp"
            android:layout_weight="1"
            android:hint="" >
        </EditText>

     <EditText
         android:id="@+id/etEnterSpecificYear"
         android:layout_width="0dp"
         android:layout_height="wrap_content"
         android:layout_marginLeft="2dp"
         android:layout_marginRight="2dp"
         android:layout_weight="1"
         android:hint="" >

    </EditText>

    </LinearLayout>

    <Button
        android:id="@+id/btnSearchDate"
        android:layout_width="85dp"
        android:layout_height="50dp"
        android:layout_gravity="center"
        android:text="Submit" 
        />

    <TextView
        android:id="@+id/tvSearchResultsDate"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:ellipsize="marquee"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:marqueeRepeatLimit="marquee_forever"
        android:maxLines="30"
        android:minLines="5"
        android:scrollbars="vertical"
        android:text=" Results..."
        android:textSize="15dp" />


</LinearLayout>

1 个答案:

答案 0 :(得分:0)

试试这个:

  

textView.requestFocus(); InputMethodManager imm =(InputMethodManager)   getSystemService(Context.INPUT_METHOD_SERVICE);   imm.showSoftInput(textView,InputMethodManager.SHOW_IMPLICIT);

参考文档:http://developer.android.com/reference/android/view/View.html#requestFocus()

afterTextChanged()中的

执行以下更改:

  

@覆盖       public void afterTextChanged(Editable s){          if(s.length()== 2){             month.requestFocus();             InputMethodManager imm =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);                      imm.showSoftInput(textView,InputMethodManager.SHOW_IMPLICIT);          }       }