‘Next’를 누르면 User EditText의 초점이 Password로 이동해야합니다. 그런 다음 비밀번호에서 오른쪽으로 이동해야합니다. 코드 작성 방법을 알려 주시겠습니까?
<LinearLayout
android:id="@+id/LinearLayout01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="User Name*" />
<EditText
android:id="@+id/txt_User"
android:layout_width="290dp"
android:layout_height="33dp"
android:singleLine="true" />
</LinearLayout>
<LinearLayout
android:id="@+id/LinearLayout02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Password*" />
<EditText
android:id="@+id/txt_Password"
android:layout_width="290dp"
android:layout_height="33dp"
android:singleLine="true"
android:password="true" />
<TextView
android:id="@+id/confirm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Password*" />
<EditText
android:id="@+id/txt_Confirm"
android:layout_width="290dp"
android:layout_height="33dp"
android:singleLine="true"
android:password="true" />
</LinearLayout>
답변
초점 처리
초점 이동은 주어진 방향에서 가장 가까운 이웃을 찾는 알고리즘을 기반으로합니다. 드문 경우이지만 기본 알고리즘이 개발자의 의도 된 동작과 일치하지 않을 수 있습니다.
다음 XML 속성을 사용하여 방향 탐색의 기본 동작을 변경하십시오.
android:nextFocusDown="@+id/.."
android:nextFocusLeft="@+id/.."
android:nextFocusRight="@+id/.."
android:nextFocusUp="@+id/.."
방향 탐색 외에 탭 탐색을 사용할 수 있습니다. 이를 위해 당신은 사용해야합니다
android:nextFocusForward="@+id/.."
특정 관점에 초점을 맞추려면 전화
view.requestFocus()
변화하는 특정 초점 이벤트를 들으려면 View.OnFocusChangeListener
키보드 버튼
android:imeOptions
키보드의 추가 버튼을 처리하는 데 사용할 수 있습니다 .
편집기와 연결된 IME에서 활성화하여 응용 프로그램과의 통합을 향상시킬 수있는 추가 기능 여기서 상수는 imeOptions에 의해 정의 된 상수에 해당합니다.
imeOptions의 상수는 다양한 액션과 플래그를 포함합니다. 값에 대해서는 위의 링크를 참조하십시오.
가치 예
액션 다음 :
조치 키는 “다음”조작을 수행하여 사용자가 텍스트를 승인 할 다음 필드로 이동합니다.
완료 :
동작 키는 “완료”작업을 수행합니다. 일반적으로 입력 할 항목이 더 이상없고 IME가 닫힙니다.
코드 예 :
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="32dp"
android:layout_marginTop="16dp"
android:imeOptions="actionNext"
android:maxLines="1"
android:ems="10" >
<requestFocus />
</EditText>
<EditText
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/editText1"
android:layout_below="@+id/editText1"
android:layout_marginTop="24dp"
android:imeOptions="actionDone"
android:maxLines="1"
android:ems="10" />
</RelativeLayout>
imeoptions 이벤트를 들으려면을 사용하십시오 TextView.OnEditorActionListener
.
editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
performSearch();
return true;
}
return false;
}
});
답변
android:inputType="text"
같은 효과를 가져와야합니다. 다음을 누르면 다음 요소에 초점을 맞 춥니 다.
android:nextFocusDown="@+id/.."
다음보기에서 초점을 얻지 않으려면 이 옵션을 추가 하십시오.
답변
editText를 추가하십시오
android:imeOptions="actionNext"
android:singleLine="true"
매니페스트의 활동에 속성 추가
android:windowSoftInputMode="adjustResize|stateHidden"
레이아웃 파일에서 ScrollView가 루트 또는 상위 레이아웃으로 설정 됨
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.ukuya.marketplace.activity.SignInActivity">
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!--your items-->
</ScrollView>
</LinearLayout>
추가 할 때마다 원하지 않으면 스타일을 작성하십시오. values / style.xml에 스타일 추가
기본 / 스타일 :
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="editTextStyle">@style/AppTheme.CustomEditText</item>
</style>
<style name="AppTheme.CustomEditText" parent="android:style/Widget.EditText">
//...
<item name="android:imeOptions">actionNext</item>
<item name="android:singleLine">true</item>
</style>
답변
다음 줄을 사용하십시오
android:nextFocusDown="@+id/parentedit"
parentedit
다음 EditText
에 초점을 맞출 ID입니다 .
위의 줄에는 다음 줄도 필요합니다.
android:inputType="text"
또는
android:inputType="number"
@Alexei Khlebnikov 제안에 감사드립니다.
답변
android:inputType="textNoSuggestions"
android:imeOptions="actionNext"
android:singleLine="true"
android:nextFocusForward="@+id/.."
추가 필드 추가
android : inputType = “textNoSuggestions”
내 경우에 일했다!
답변
<AutoCompleteTextView
android:id="@+id/email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/user"
android:hint="@string/username"
android:inputType="text"
android:maxLines="1"
android:imeOptions="actionNext"
android:singleLine="true" />
이 세 줄은 마술을
android:maxLines="1"
android:imeOptions="actionNext"
android:singleLine="true"
답변
onEditorAction 핸들러에서 다음 예제와 같이 조치를 처리 중인지 (true) 또는 일부 논리를 적용하고 정상적인 동작 (false)을 원하는지 여부를 나타내는 부울을 리턴해야합니다.
EditText te = ...
te.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event){
if (actionId == EditorInfo.IME_ACTION_NEXT) {
// Some logic here.
return true; // Focus will do whatever you put in the logic.
}
return false; // Focus will change according to the actionId
}
});
포커스가 움직이지 않았기 때문에 논리를 수행 한 후 true를 반환했을 때 이것을 발견했습니다.