效果是这个样子
1.先在页面上整一个editText ,给一个ID
<EditText
android:id="@+id/ed_tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:drawableRight="@mipmap/up"
android:layout_margin="20dp"
app:layout_constraintTop_toTopOf="parent" />
2.逻辑代码如下```language
import android.os.Bundle import android.view.View import android.widget.ArrayAdapter import android.widget.EditText import android.widget.ListPopupWindow import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val edText = findViewById<EditText>(R.id.ed_tv)
edText.setOnClickListener(View.OnClickListener {
showListPopulWindow()
})
}
private lateinit var listPopupWindow: ListPopupWindow
private fun showListPopulWindow() {
val edText = findViewById<EditText>(R.id.ed_tv)
val list = arrayOf("item1", "item2", "item3", "item4") //List方法可以自己抽出来动态添加数据
if (::listPopupWindow.isInitialized.not()) {
listPopupWindow = ListPopupWindow(this)
listPopupWindow.setAdapter(
ArrayAdapter(
this,
android.R.layout.simple_list_item_1,
list
)
) //用android内置布局,或设计自己的样式
listPopupWindow.anchorView = edText //以哪个控件为基准,在该处以logId为基准
listPopupWindow.isModal = true
listPopupWindow.setOnItemClickListener { adapterView, view, i, l ->
//设置项点击监听
edText.setText(list[i]) //把选择的选项内容展示在EditText上
listPopupWindow.dismiss() //如果已经选择了,隐藏起来
}
}
listPopupWindow.show() //把ListPopWindow展示出来
}
}
```language