gpt4 book ai didi

android - 如何实现自定义的 AlertDialog View

转载 作者:IT老高 更新时间:2023-10-28 13:03:42 27 4
gpt4 key购买 nike

Android docs on AlertDialog ,它提供了以下说明和示例,用于在 AlertDialog 中设置自定义 View :

If you want to display a more complex view, look up the FrameLayout called "body" and add your view to it:

FrameLayout fl = (FrameLayout) findViewById(R.id.body);
fl.add(myView, new LayoutParams(FILL_PARENT, WRAP_CONTENT));

首先,很明显 add() 是一个错字,应该是 addView()

我对使用 R.id.body 的第一行感到困惑。它似乎是 AlertDialog 的主体元素......但我不能只在我的代码 b/c 中输入它,它会产生编译错误。 R.id.body 是在哪里定义或分配的?

这是我的代码。我尝试在构建器上使用 setView(findViewById(R.layout.whatever) 但它不起作用。我假设是因为我没有手动充气?

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Title")
.setCancelable(false)
.setPositiveButton("Go", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int id) {
EditText textBox = (EditText) findViewById(R.id.textbox);
doStuff();
}
});

FrameLayout f1 = (FrameLayout)findViewById(R.id.body /*CURRENTLY an ERROR*/);
f1.addView(findViewById(R.layout.dialog_view));

AlertDialog alert = builder.create();
alert.show();

最佳答案

您可以直接从 Layout Inflater 创建您的 View ,您只需要使用您的布局 XML 文件的名称和文件中的布局 ID。

您的 XML 文件应具有如下 ID:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dialog_layout_root"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="10dp"
/>

然后您可以使用以下代码在构建器上设置布局:

LayoutInflater inflater = getLayoutInflater();
View dialoglayout = inflater.inflate(R.layout.dialog_layout, null);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(dialoglayout);
builder.show();

关于android - 如何实现自定义的 AlertDialog View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2795300/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com