我有一个用户在我的应用程序中录制的视频列表。当用户长时间单击列表视图中的视频名称时,会弹出一个对话框,为用户提供以下选项:播放、重命名、删除。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/

10-14 17:27
查看更多