使用AleartDialog.Builder 的最小SDK为21 Android版本为5.0
扩展内容:
LayoutInflater 类的作用是寻找xml
findViewById则是寻找xml中的组件
若要在一个活动中使用其他布局可以使用LayoutInflater添加进来
静态构造方法返回LayoutInflater对象:
public static LayoutInflater from(Context context)
填充布局则有三种重构的函数,都会返回一个View,第一个参数是xml布局,第二个是将xml填入某个布局(可以理解为找父布局),第三个参数为是否直接将xml添加到父布局上
public View inflate(XmlPullParser parser,ViewGroup root)
public View inflate(int resource,ViewGroup root,boolean attachToRoot)
public View inflate(XmlPullParser parser, ViewGroup root,boolean attachToRoot)
根据需要,填充的xml代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/Text"
android:layout_width="100px"
android:layout_height="wrap_content"
android:singleLine="true"
/>
</LinearLayout>
主布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
java代码:
package com.example.newland.f20190820;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Build;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
AlertDialog alertDialog;
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = findViewById(R.id.btn);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
alertDialog = new AlertDialog.Builder(MainActivity.this)
//这里直接用R.lauoyt.myview也可以,最后面的boolean值省略也可以,false也可以
.setView(LayoutInflater.from(MainActivity.this).inflate(R.layout.myview,null,true))
.setMessage("请填入内容")
.setPositiveButton("jiayou", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
EditText editText = alertDialog.findViewById(R.id.Text);
Toast.makeText(MainActivity.this,editText.getText().toString(),Toast.LENGTH_LONG).show();
}
}).create();
alertDialog.show();
}
}
});
}
}