我有一个用户在我的应用中录制的视频列表。当用户在ListView中长按视频的名称时,会弹出一个对话框,为用户提供以下选项:播放,重命名,删除。 Play会为视频播放器播放视频播放器。按预期工作。删除会打开另一个对话框,以确认用户是否要删除该视频。也可以正常工作。单击重命名时,它应该显示另一个包含自定义视图中的EditText的AlertDialog,以允许用户重命名视频。
这里是重命名AlertDialog的自定义视图集的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中,我设置了自定义视图和AlertDialog:
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显示时,它有图标,标题,消息和按钮,但不是自定义视图。
答案 0 :(得分:1)
来自AlertDialog文档:
如果要显示更复杂的视图,请查看名为“custom”的FrameLayout并将视图添加到其中:
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()
是否有帮助。
答案 1 :(得分:0)
我现在无法查找来源,但请尝试从链中删除此调用setMessage()
(可能还有相关的标题和图标)。
首先,由于您提供自己的布局,因此没有任何意义。其次,此调用实际上可能会阻止自定义视图的使用。