Android 대화 상자에 EditText를 추가하는 방법
우선은 가장 간단한 예를 소개합니다.
Sample.kt
val editText = AppCompatEditText(this)
AlertDialog.Builder(this)
.setTitle("名前の変更")
.setMessage("名前を入力してください。")
.setView(editText)
.setPositiveButton("OK") { dialog, _ ->
// OKボタンを押したときの処理
dialog.dismiss()
}
.setNegativeButton("キャンセル") { dialog, _ ->
// キャンセルボタンを押したときの処理
dialog.dismiss()
}
.create()
.show()
표시되는 대화 상자는 여기입니다.
이 상태에서는 입력란이 다이얼로그의 폭 가득 퍼지고 있고, OK 버튼도 처음부터 유효화되고 있는 것을 알 수 있을까 생각합니다.
또한 문자도 무한히 입력할 수 있습니다.
이 근처를 조정한 다이얼로그를 이번에는 구현해 가고 싶습니다.
구체적인 실장 내용은 다음과 같습니다.
코드는 다음과 같습니다.
Sample.kt
// ダイアログ専用のレイアウトを読み込む
val dialogLayout = LayoutInflater.from(this).inflate(R.layout.layout_common_edit_dialog, null)
val editText = dialogLayout.findViewById<AppCompatEditText>(R.id.editTextDialog)
// ダイアログ作成
val dialog = AlertDialog.Builder(this)
.setTitle("名前の変更")
.setMessage("名前を入力してください。")
.setView(dialogLayout)
.setPositiveButton("OK") { dialog, _ ->
// OKボタンを押したときの処理
dialog.dismiss()
}
.setNegativeButton("キャンセル") { dialog, _ ->
// キャンセルボタンを押したときの処理
dialog.dismiss()
}
.create()
dialog.show()
// ダイアログのボタンを取得し、デフォルトの色を「#000000」に設定
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(getColor(R.color.black))
dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(getColor(R.color.black))
// AppCompatEditTextにTextChangedListenerをセット
editText.addTextChangedListener( object : TextWatcher {
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {}
override fun afterTextChanged(s: Editable?) {
// 1~32文字の時だけOKボタンを有効化する
if (s.isNullOrEmpty() || s.length > 32) {
dialog.getButton(AlertDialog.BUTTON_POSITIVE).isEnabled = false
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(getColor(R.color.gray))
} else {
dialog.getButton(AlertDialog.BUTTON_POSITIVE).isEnabled = true
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(getColor(R.color.black))
}
}
})
layout_common_edit_dialog.xml
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.appcompat.widget.AppCompatEditText
android:id="@+id/editTextDialog"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:hint="1~32文字で入力してください"
android:inputType="text"
android:maxLength="32"
android:maxLines="1"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
아래와 같은 다이얼로그가 표시되어 문자수에 따라 OK 버튼의 유효/무효가 바뀌면 구현 완료입니다.
Reference
이 문제에 관하여(Android 대화 상자에 EditText를 추가하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kenmaeda51415/items/16ebf7fdf8aada8304fc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)