Android Kotlin在动态添加的edittext上设置属性
我正在尝试学习Kotlin,我想在android手机的屏幕上创建一系列动态相邻的编辑文本 编辑文本的数量取决于用户必须猜测的单词长度。因此,如果单词是dog,则应为单词中的每个字母向用户提供编辑文本 所以我做了类似的事情Android Kotlin在动态添加的edittext上设置属性,android,kotlin,android-edittext,Android,Kotlin,Android Edittext,我正在尝试学习Kotlin,我想在android手机的屏幕上创建一系列动态相邻的编辑文本 编辑文本的数量取决于用户必须猜测的单词长度。因此,如果单词是dog,则应为单词中的每个字母向用户提供编辑文本 所以我做了类似的事情 for (letter in word) { val editText = EditText(this) ... } 然后将它们附加到线性布局中。 但是我想在添加edittext之前在其上设置一些属性,对此我完全不知所措 谁能给我指一下正确的方向吗 请帮助我,
for (letter in word) {
val editText = EditText(this)
...
}
然后将它们附加到线性布局中。
但是我想在添加edittext之前在其上设置一些属性,对此我完全不知所措
谁能给我指一下正确的方向吗
请帮助我,我很困惑…:-) 如果知道要添加到编辑文本中的属性,可以为其创建XML布局。您可以设置文本颜色、背景等,然后放大布局 所以在你的for循环中,你会这样做
val inflater = LayoutInflater.from(this)
val editText = inflater.inflate(R.layout.YourCustomEditText, null, false) as EditText
// add to editText to your linearLayout as you're already doing
<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/edit_text_vew"
android:layout_width="wrap_content"
android:layout_height="35dp"
android:background="@color/white"
android:hint="hint"
android:orientation="vertical"
android:padding="4dp"
android:paddingStart="8dp"
android:paddingTop="4dp"
android:paddingEnd="8dp"
android:textColor="@color/colorAccent"></EditText>
然后CustomEditText将是这样的xml文件
val inflater = LayoutInflater.from(this)
val editText = inflater.inflate(R.layout.YourCustomEditText, null, false) as EditText
// add to editText to your linearLayout as you're already doing
<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/edit_text_vew"
android:layout_width="wrap_content"
android:layout_height="35dp"
android:background="@color/white"
android:hint="hint"
android:orientation="vertical"
android:padding="4dp"
android:paddingStart="8dp"
android:paddingTop="4dp"
android:paddingEnd="8dp"
android:textColor="@color/colorAccent"></EditText>
如果知道要添加到编辑文本中的属性,可以为其创建XML布局。您可以设置文本颜色、背景等,然后放大布局 所以在你的for循环中,你会这样做
val inflater = LayoutInflater.from(this)
val editText = inflater.inflate(R.layout.YourCustomEditText, null, false) as EditText
// add to editText to your linearLayout as you're already doing
<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/edit_text_vew"
android:layout_width="wrap_content"
android:layout_height="35dp"
android:background="@color/white"
android:hint="hint"
android:orientation="vertical"
android:padding="4dp"
android:paddingStart="8dp"
android:paddingTop="4dp"
android:paddingEnd="8dp"
android:textColor="@color/colorAccent"></EditText>
然后CustomEditText将是这样的xml文件
val inflater = LayoutInflater.from(this)
val editText = inflater.inflate(R.layout.YourCustomEditText, null, false) as EditText
// add to editText to your linearLayout as you're already doing
<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/edit_text_vew"
android:layout_width="wrap_content"
android:layout_height="35dp"
android:background="@color/white"
android:hint="hint"
android:orientation="vertical"
android:padding="4dp"
android:paddingStart="8dp"
android:paddingTop="4dp"
android:paddingEnd="8dp"
android:textColor="@color/colorAccent"></EditText>
使用EditText创建xml布局 input_edittext_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/input_letter_edittext"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:padding="8dp"
/>
在主布局中添加要使用id显示的线性布局
activity_words.xml
<?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"
tools:context=".WordsActivity">
<LinearLayout
android:id="@+id/letter_input_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
/>
</LinearLayout>
WordsActivity.kt
class WordsActivity : AppCompatActivity() {
val wordlist = listOf("Cat", "dog", "Tiger", "Elephant")
lateinit var wordlayout: LinearLayout
val currentEditTextList = mutableListOf<EditText>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_words)
wordlayout = findViewById<LinearLayout>(R.id.letter_input_layout)
findMatchedString("Elephant")//example calling from here
}
//String passed as argument to compare from word list
fun findMatchedString(inputString: String){
wordlist.forEach {
if(it == inputString){
addEditTextToLayout(inputString)
}else{
//Handle your logic to handle else case
}
}
}
fun addEditTextToLayout(matchedString: String) {
//first adding EditText objects to list
matchedString?.let {
it.forEachIndexed { index, element ->
val editText = getInputEditText()
editText.tag = index
editText.setText(element.toString())//This line added to check the
each letter on the each EditText separately
currentEditTextList.add(editText)
}
}
//second adding each EditText from list to layout
currentEditTextList?.let {
if (it.size > 0) {
it.forEachIndexed { index, element ->
element.tag = index
wordlayout.addView(element)
}
}
}
}
fun getInputEditText() : EditText{
return layoutInflater.inflate(R.layout.input_edittext_layout, null, false) as
EditText
}
}
class-WordsActivity:appcompativity(){
val wordlist=listOf(“猫”、“狗”、“老虎”、“大象”)
lateinit变量wordlayout:LinearLayout
val currentEditTextList=mutableListOf()
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity\u单词)
wordlayout=findviewbyd(R.id.letter\u input\u layout)
findMatchedString(“大象”)//从这里调用的示例
}
//作为参数从单词列表中传递以进行比较的字符串
fun findMatchedString(inputString:String){
wordlist.forEach{
if(it==inputString){
addEditTextToLayout(inputString)
}否则{
//处理你的逻辑来处理其他情况
}
}
}
趣味addEditTextToLayout(匹配字符串:字符串){
//首先将EditText对象添加到列表中
匹配的字符串?让我们{
it.foreachinedexed{index,element->
val editText=getInputItemText()
editText.tag=索引
editText.setText(element.toString())//添加此行是为了检查
每个编辑文本上的每个字母都是分开的
currentEditTextList.add(编辑文本)
}
}
//第二步,将列表中的每个编辑文本添加到布局中
currentEditTextList?让我们{
如果(it.size>0){
it.foreachinedexed{index,element->
element.tag=索引
wordlayout.addView(元素)
}
}
}
}
fun GetInputItemText():EditText{
返回LayoutFlater.充气(R.layout.input\u edittext\u layout,null,false)为
编辑文本
}
}
使用EditText创建xml布局
input_edittext_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/input_letter_edittext"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:padding="8dp"
/>
在主布局中添加要使用id显示的线性布局
activity_words.xml
<?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"
tools:context=".WordsActivity">
<LinearLayout
android:id="@+id/letter_input_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
/>
</LinearLayout>
WordsActivity.kt
class WordsActivity : AppCompatActivity() {
val wordlist = listOf("Cat", "dog", "Tiger", "Elephant")
lateinit var wordlayout: LinearLayout
val currentEditTextList = mutableListOf<EditText>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_words)
wordlayout = findViewById<LinearLayout>(R.id.letter_input_layout)
findMatchedString("Elephant")//example calling from here
}
//String passed as argument to compare from word list
fun findMatchedString(inputString: String){
wordlist.forEach {
if(it == inputString){
addEditTextToLayout(inputString)
}else{
//Handle your logic to handle else case
}
}
}
fun addEditTextToLayout(matchedString: String) {
//first adding EditText objects to list
matchedString?.let {
it.forEachIndexed { index, element ->
val editText = getInputEditText()
editText.tag = index
editText.setText(element.toString())//This line added to check the
each letter on the each EditText separately
currentEditTextList.add(editText)
}
}
//second adding each EditText from list to layout
currentEditTextList?.let {
if (it.size > 0) {
it.forEachIndexed { index, element ->
element.tag = index
wordlayout.addView(element)
}
}
}
}
fun getInputEditText() : EditText{
return layoutInflater.inflate(R.layout.input_edittext_layout, null, false) as
EditText
}
}
class-WordsActivity:appcompativity(){
val wordlist=listOf(“猫”、“狗”、“老虎”、“大象”)
lateinit变量wordlayout:LinearLayout
val currentEditTextList=mutableListOf()
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity\u单词)
wordlayout=findviewbyd(R.id.letter\u input\u layout)
findMatchedString(“大象”)//从这里调用的示例
}
//作为参数从单词列表中传递以进行比较的字符串
fun findMatchedString(inputString:String){
wordlist.forEach{
if(it==inputString){
addEditTextToLayout(inputString)
}否则{
//处理你的逻辑来处理其他情况
}
}
}
趣味addEditTextToLayout(匹配字符串:字符串){
//首先将EditText对象添加到列表中
匹配的字符串?让我们{
it.foreachinedexed{index,element->
val editText=getInputItemText()
editText.tag=索引
editText.setText(element.toString())//添加此行是为了检查
每个编辑文本上的每个字母都是分开的
currentEditTextList.add(编辑文本)
}
}
//第二步,将列表中的每个编辑文本添加到布局中
currentEditTextList?让我们{
如果(it.size>0){
it.foreachinedexed{index,element->
element.tag=索引
wordlayout.addView(元素)
}
}
}
}
fun GetInputItemText():EditText{
返回LayoutFlater.充气(R.layout.input\u edittext\u layout,null,false)为
编辑文本
}
}
为什么不使用RecyclerView进行此操作?为什么不使用RecyclerView呢?我正在试,我正在试,谢谢。但是我不明白充气标签是什么:)对不起,输入错误-应该是充气的谢谢。但我不明白什么是充气标签:)对不起,打字错误-应该只是充气