-1
  • 총 5 개의 편집 문구가 있습니다.
  • 에서 setOnFocusChangeListener 중 하나를 호출합니다. 예 : txt_location입니다.
  • 버튼을 클릭하고 저장하고 난 후 버튼을 눌러 모든 편집 문구를 확인합니다.
  • 클릭하면 저장하고 계속하십시오 버튼 txt_location - EditText 자동으로 원하지 않는 포커스를 얻습니다. 내가 시도 무엇

:버튼 클릭시 EditText에서 포커스 취소 - Android

  • txt_location.clearFocus()
  • other_edittext.requestFocus() 다음과 같은

내 코드입니다. 아래 방법

AddAddressFragment.java

onActivityCreated 방법이다.

txt_location.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
     @Override 
     public void onFocusChange(View view, boolean hasFocus) { 
      if (hasFocus) { 

       txt_location.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         findPlace(); 
        } 
       }); 
       findPlace(); 
      } 
     } 
    }); 

layoutFooter.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if(isvalidateFields()){ 
       // Code after validating all EditTexts 
      } 
     } 
    }); 

아래의 방법은 onActivityCreated 메소드 외부에 있습니다.

private boolean isvalidateFields() { 
    boolean result = true; 
    if (!ValidationUtils.hasText(txtCity, cityTxt, "City Required")) { 
     result = false; 
    } 
    if (!ValidationUtils.hasText(txt_location, location_txt, "Location Required")) { 
     result = false; 
    } 
    if (!ValidationUtils.hasText(txtPincode, pincodeTxt, "Pincode Required")) 
     result = false; 
    if (!ValidationUtils.hasText(txtDoorName, doorNumberTxt, "Address line 1 Required")) { 
     result = false; 
    } 
    if (!ValidationUtils.hasText(txtApartmentName, apartmentTxt, "Address line 2 Required")) { 
     result = false; 
    } 
    return result; 
} 

address_fragment.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"> 

    <ScrollView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" 
     android:fillViewport="true"> 

     <RelativeLayout 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_marginTop="15px"> 

      <LinearLayout 
       android:id="@+id/spinner" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:orientation="vertical"> 

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

        <TextView 
         android:id="@+id/titleText" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_alignParentLeft="true" 
         android:layout_margin="@dimen/large_margin" 
         android:layout_marginBottom="@dimen/normal_margin" 
         android:text="Address" 
         android:textSize="@dimen/text_content" /> 

        <CheckBox 
         android:id="@+id/checkBox" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_alignParentRight="true" 
         android:layout_margin="@dimen/small_margin" 
         android:button="@drawable/check_box" 
         android:checked="true" 
         android:clickable="false" /> 
       </RelativeLayout> 

       <View 
        android:layout_width="match_parent" 
        android:layout_height="1dp" 
        android:layout_margin="@dimen/small_margin" 
        android:background="@color/gray_border" /> 

       <LinearLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_margin="@dimen/large_margin" 
        android:orientation="vertical" 
        android:padding="@dimen/large_margin"> 

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

         <android.support.design.widget.TextInputLayout 
          android:id="@+id/doorNumberTxt" 
          android:layout_width="match_parent" 
          android:layout_height="wrap_content" 
          android:layout_marginLeft="20dp" 
          android:theme="@style/TextLabel"> 

          <EditText 
           android:id="@+id/txtDoorName" 
           android:layout_width="match_parent" 
           android:layout_height="30dp" 
           android:layout_marginBottom="@dimen/normal_margin" 
           android:layout_marginTop="@dimen/normal_margin" 
           android:background="@android:color/transparent" 
           android:hint="@string/door_number" 
           android:singleLine="true" 
           android:textColorHighlight="@color/gray_text" 
           android:textColorHint="@color/gray_text" 
           android:textSize="@dimen/text_medium" /> 
         </android.support.design.widget.TextInputLayout> 

         <View 
          android:layout_width="match_parent" 
          android:layout_height="1dp" 
          android:layout_marginBottom="@dimen/normal_margin" 
          android:layout_marginTop="@dimen/normal_margin" 
          android:background="@color/gray_border" /> 

         <android.support.design.widget.TextInputLayout 
          android:id="@+id/apartmentTxt" 
          android:layout_width="match_parent" 
          android:layout_height="wrap_content" 
          android:layout_marginLeft="20dp" 
          android:theme="@style/TextLabel"> 

          <EditText 
           android:id="@+id/txtApartmentName" 
           android:layout_width="match_parent" 
           android:layout_height="30dp" 
           android:layout_marginBottom="@dimen/normal_margin" 
           android:layout_marginTop="@dimen/normal_margin" 
           android:background="@android:color/transparent" 
           android:hint="@string/apartment_number" 
           android:singleLine="true" 
           android:textColorHighlight="@color/gray_text" 
           android:textColorHint="@color/gray_text" 
           android:textSize="@dimen/text_medium" /> 
         </android.support.design.widget.TextInputLayout> 

         <View 
          android:layout_width="match_parent" 
          android:layout_height="1dp" 
          android:layout_marginBottom="@dimen/normal_margin" 
          android:layout_marginTop="@dimen/normal_margin" 
          android:background="@color/gray_border" /> 

         <android.support.design.widget.TextInputLayout 
          android:id="@+id/location_txt" 
          android:layout_width="match_parent" 
          android:layout_height="wrap_content" 
          android:layout_marginLeft="20dp" 
          android:theme="@style/TextLabel"> 

          <EditText 
           android:id="@+id/txt_location" 
           android:layout_width="match_parent" 
           android:layout_height="30dp" 
           android:layout_marginBottom="@dimen/normal_margin" 
           android:layout_marginTop="@dimen/normal_margin" 
           android:background="@android:color/transparent" 
           android:clickable="false" 
           android:hint="@string/txt_location" 
           android:lines="2" 
           android:textColorHighlight="@color/gray_text" 
           android:textColorHint="@color/gray_text" 
           android:textSize="@dimen/text_medium" /> 
         </android.support.design.widget.TextInputLayout> 

         <View 
          android:layout_width="match_parent" 
          android:layout_height="1dp" 
          android:layout_marginBottom="@dimen/normal_margin" 
          android:layout_marginTop="@dimen/normal_margin" 
          android:background="@color/gray_border" /> 

         <android.support.design.widget.TextInputLayout 
          android:id="@+id/cityTxt" 
          android:layout_width="match_parent" 
          android:layout_height="wrap_content" 
          android:layout_marginLeft="20dp" 
          android:theme="@style/TextLabel"> 

          <EditText 
           android:id="@+id/txtCity" 
           android:layout_width="match_parent" 
           android:layout_height="30dp" 
           android:layout_marginBottom="@dimen/normal_margin" 
           android:layout_marginTop="@dimen/normal_margin" 
           android:background="@android:color/transparent" 
           android:clickable="false" 
           android:hint="@string/city" 
           android:lines="5" 
           android:textColorHighlight="@color/gray_text" 
           android:textColorHint="@color/gray_text" 
           android:textSize="@dimen/text_medium" /> 
         </android.support.design.widget.TextInputLayout> 

         <View 
          android:layout_width="match_parent" 
          android:layout_height="1dp" 
          android:layout_marginBottom="@dimen/normal_margin" 
          android:layout_marginTop="@dimen/normal_margin" 
          android:background="@color/gray_border" /> 

         <android.support.design.widget.TextInputLayout 
          android:id="@+id/pincodeTxt" 
          android:layout_width="match_parent" 
          android:layout_height="wrap_content" 
          android:layout_marginLeft="20dp" 
          android:theme="@style/TextLabel"> 

          <EditText 
           android:id="@+id/txtPincode" 
           android:layout_width="match_parent" 
           android:layout_height="30dp" 
           android:layout_marginBottom="@dimen/normal_margin" 
           android:layout_marginTop="@dimen/normal_margin" 
           android:background="@android:color/transparent" 
           android:digits="1234567890" 
           android:hint="@string/pincode" 
           android:inputType="textPostalAddress" 
           android:singleLine="true" 
           android:textColorHighlight="@color/gray_text" 
           android:textColorHint="@color/gray_text" 
           android:textSize="@dimen/text_medium" /> 
         </android.support.design.widget.TextInputLayout> 

         <View 
          android:layout_width="match_parent" 
          android:layout_height="1dp" 
          android:layout_marginBottom="@dimen/normal_margin" 
          android:layout_marginTop="@dimen/normal_margin" 
          android:background="@color/gray_border" /> 
        </LinearLayout> 
       </LinearLayout> 
      </LinearLayout> 
     </RelativeLayout> 
    </ScrollView> 

    <RelativeLayout 
     android:id="@+id/layoutFooter" 
     android:layout_width="match_parent" 
     android:layout_height="?android:attr/actionBarSize" 
     android:layout_alignParentBottom="true" 
     android:background="@color/fab_button_color"> 

     <TextView 
      android:id="@+id/txtLblInr" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:layout_centerVertical="true" 
      android:layout_gravity="center_vertical" 
      android:layout_marginLeft="@dimen/x_large_margin" 
      android:gravity="center_vertical" 
      android:singleLine="true" 
      android:text="@string/save_n_contine" 
      android:textAllCaps="true" 
      android:textColor="@color/white" 
      android:textSize="@dimen/text_title" /> 

     <TextView 
      android:id="@+id/txtTotalContinue" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:layout_alignParentRight="true" 
      android:layout_centerVertical="true" 
      android:layout_gravity="center_vertical" 
      android:layout_marginRight="@dimen/x_large_margin" 
      android:drawableRight="@drawable/right_arrow" 
      android:gravity="center" 
      android:singleLine="true" 
      android:textColor="@color/white" 
      android:textSize="@dimen/text_title" /> 
    </RelativeLayout> 
</LinearLayout> 

답변

0

넣어 ZeroOne의 답변이 저에게 효과적이지 않았습니다. 나는 setOnFocusChangeListener을 제거하고 직전 txt_location 인 글고 치기에 setOnEditorActionListener을 넣어 - 글고. 그리고 난 setOnTouchListenertxt_location - EditText 넣어.

setOnEditorActionListener - 키보드의 NEXT LINE 버튼을 클릭하면 호출됩니다.

전체 변경 코드는 다음과 같습니다.

EditTextJustBefore_txt_location_EditText.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
     @Override 
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
      if (actionId == EditorInfo.IME_ACTION_NEXT) { 
       findPlace(); 
      } 
      return true; 
     } 
    }); 

    txt_location.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      if (event.getAction() == MotionEvent.ACTION_DOWN) { 
       findPlace(); 
      } 
      return false; 
     } 
    }); 
0

부모 레이아웃의 예에 자료 : LinearLayout을, 그리고 linearLayout.requestFocus()

내가 같은 다른 해결책을 발견이

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/linearlayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:descendantFocusability="beforeDescendants" <-- add this 
    android:focusableInTouchMode="true" <-- add this 
> 

..... 

</LinearLayout> 
+0

'linearLayout.requestFocus()'를 넣을 위치는? 나는'layoutFooter.setOnClickListener (새로운보기.OnClickListener를() { @Override 공공 무효 온 클릭 (보기 V) { 경우 (isvalidateFields()) { } 다른 { ll_address_frag.requestFocus(); } } }) ' 하지만 @ ZeroOne이 작동하지 않습니다. –