我需要弹出窗口来显示我的用户的选项例如,我想添加一个长按按钮,然后当按钮点击时,显示一个带有透明背景的弹出窗口,当在外面点击关闭弹出窗口
完全一样
我已经试了很多方法但不为我工作。
我也不知道如何使用对话框窗口。
无论使用哪一个,dilog fragment或弹出窗口但我需要我的窗口像这样(上面是数据库给出的用户名,然后是选项)
这里是我应该放置弹出窗口的地方:
val mUserAdapter = UserAdapter()
mUserAdapter.setOnclickListener(AdapterListener({
if (it != 0L)
this.findNavController().navigate(
UserListFragmentDirections.actionUserListFragmentToIncreaseMoneyFragment(it)
)
Log.d("TAG", "navTeat $it ")
}, {
deleteDialog(it)
}
) {
Toast.makeText(activity, "Long", Toast.LENGTH_SHORT).show() //Here instead of Toast, I need POPUP WINDOW
})
谢谢:)
1。对话片段
假设你正在使用导航组件,使用
<dialog
android:id="@+id/navigation_dialog_fragment"
android:name="com.app.example.ui.dialogFragment"
tools:layout="@layout/dialogFragment"/>
覆盖对话片段的onCreate()
使背景半透明,
class mDialogFrag: DialogFragment(R.layout.dialog_fragment) {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setStyle(STYLE_NO_FRAME, R.style.DialogTheme)
//populate UI with data from DB
DialogTheme:
<style name="AppDialogTheme" parent="Theme.AppCompat.Light">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">#40000000</item><!--dialog background-->
<item name="android:backgroundDimEnabled">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
</style>
2。警告对话框
在你的目标片段,
lateinit var mAlert : AlertDialog
//inflate custom layout
val alertBinding = AlertBinding.inflate(LayoutInflater.from(requireContext()))
alertBinding?.apply{
//populate UI with data from DB
}
val builder = AlertDialog.Builder(requireContext())
mAlert = builder.setView(alertBinding.root)
.setCancelable(false)
.create()
mAlert.window?.setBackgroundDrawable(
ContextCompat.getDrawable(requireContext(),R.drawable.bg_card) //custom dialog background
)
mAlert.show()
这两种方法都使用自定义布局来实现您的需求。但DialogFragment是为更复杂的UI(即提供更多的控制UI动态)。然而,AlertDialog可以用于更简单的UI,比如你的。
或者您可以使用默认列表,称为传统的单选项列表AlertDialog
,像这里这样更简单。