AutoCompleteTextView에 포커스를 둔 채 키보드를 숨기기
AutoCompleteTextView란?
키보드에 의한 인풋에 대해서, 자동으로 문자를 보완해 주는 기능을 갖추고 있던 EditText입니다.
일반적으로 Google의 머티리얼 디자인 가이드라인에 준거한 드롭다운 메뉴를 작성하는 경우는 다음과 같은 구현을 합니다.
res/layout/dropdown_menu.xml
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/lyt_dropdown"
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.ExposedDropdownMenu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="項目名1">
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
android:id="@+id/dropdown"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</com.google.android.material.textfield.TextInputLayout>
res/layout/item_dropdown_menu.xml
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp"
android:ellipsize="end"
android:maxLines="1"
android:textAppearance="?attr/textAppearanceSubtitle1"/>
그건 그렇고,
android:ellipsize="end"
android:ellipsize="start"
로 설정하면 텍스트를 전체 텍스트로 표시할 수 있습니다.final AutoCompleteTextView view = root.findViewById(R.id.dropdown);
ArrayAdapter<String> adapter = new ArrayAdapter<>(
view.getContext(),
R.layout.item_dropdown_menu,
new String[]{
"選択値1",
"選択値2",
"選択値3",
"選択値4",
"選択値5",
});
view.setAdapter(adapter);
그러나, 이대로는 텍스트 박스를 선택했을 때에 드롭다운 메뉴가 표시되고 있는데 키보드도 표시되어 버립니다.
AutoCompleteTextView
는 EditText
이기 때문에 커서도 표시됩니다.어디까지나 구체 l. 이오 는 디자인의 가이드 라인이므로, 디자인에 대해서만 기재되어 있습니다.
드롭다운 메뉴 디자인
텍스트 필드 디자인
여기에서 hint의 색 변경 등의 풍부한 움직임은 유지하면서,
커서나 키보드가 표시되지 않는 다음과 같은 이미지로 하고 싶네요.
커서 숨기기
AutoCompleteTextView 레이아웃 파일에
android:cursorVisible="false"
를 추가합니다.키보드 숨기기
초점을 맞추었을 때의 풍부한 움직임은 그대로,
키보드를 숨기는 방법은 다음 코드로 얻을 수 있습니다.
AutoCompleteTextView
android:focusable="true"
android:focusableInTouchMode="true"
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/lyt_dropdown"
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.ExposedDropdownMenu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:hint="項目名1">
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
android:id="@+id/dropdown"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:cursorVisible="false"
android:focusable="true"
android:focusableInTouchMode="true"
android:maxLines="1"
android:text="選択肢1"
android:textSize="18sp"
tools:ignore="LabelFor" />
</com.google.android.material.textfield.TextInputLayout>
AutoCompleteTextView view = findViewById(R.id.dropdown);
view.setShowSoftInputOnFocus(false);
dropdown.setShowSoftInputOnFocus = false
환경
Android Studio 4.1.1
Build #AI-201.8743.12.41.6953283, built on November 5, 2020
Runtime version: 1.8.0_242-release-1644-b01 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 10 10.0
GC: ParNew, ConcurrentMarkSweep
Memory: 4029M
Cores: 8
Registry: ide.new.welcome.screen.force=true, external.system.auto.import.disabled=true
Non-Bundled Plugins: org.jetbrains.kotlin, com.developerphil.adbidea
Reference
이 문제에 관하여(AutoCompleteTextView에 포커스를 둔 채 키보드를 숨기기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/naoele/items/4a4c5865a1398234f2ff텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)