我有一个用户在我的应用程序中录制的视频列表。当用户长时间单击列表视图中的视频名称时,会弹出一个对话框,为用户提供以下选项:播放、重命名、删除。Play为视频播放器提供播放视频的选择器。一切正常。delete会弹出另一个对话框,确认用户要删除视频。也能正常工作。单击“重命名”时,应该会显示另一个警报对话框,其中包含来自自定义视图的EditText,以便用户重命名视频。
以下是“重命名警报”对话框的自定义视图集的XML:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/flRename"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<EditText
android:id="@+id/etRename"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/hint_rename" />
</FrameLayout>
在oncreate中,我设置了自定义视图和警报对话框:
vRename = getLayoutInflater().inflate(R.layout.rename, null);
etRename = (EditText)vRename.findViewById(R.id.etRename);
adRename = new AlertDialog.Builder(context)
.setIcon(R.drawable.ic_launcher)
.setMessage("Rename video:")
.setPositiveButton("Rename", dioclRename)
.setNegativeButton("Cancel", null)
.setTitle(getString(R.string.app_name))
.setView(vRename)
.create();
当AlertDialog出现时,它有图标、标题、消息和按钮,但没有自定义视图。
最佳答案
从AlertDialog文档中:
如果要显示更复杂的视图,请查找名为“自定义”的框架布局并将视图添加到其中:
FrameLayout fl = (FrameLayout) findViewById(android.R.id.custom);
fl.addView(myView, new LayoutParams(MATCH_PARENT, WRAP_CONTENT));
所以也许打电话给:
FrameLayout fl = (FrameLayout) adRename.findViewById(android.R.id.custom);
fl.addView(vRename, new LayoutParams(MATCH_PARENT, WRAP_CONTENT));
或者检查从
create()
切换到show()
是否有帮助。关于android - AlertDialog.Builder:setView;自定义 View 未显示,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29906349/