Um mehrere Ansichten in einem Dialogfeld anzuzeigen, blasen Sie das LinearLayout auf, in dem die Ansichten im Dialogfeld platziert sind. Es ist eine Funktion, die ich später verwenden möchte, also ein kleines Memorandum.
Beachten Sie diesmal das Dialogfeld, in dem layout.xml verwendet wird, und das Dialogfeld, in dem Layout mit neuem LinearLayout dynamisch generiert wurde, ohne layout.xml zu verwenden.
Verfassung 1.MainActivity.java 2.MyDialog.java 3.dilog_my.xml
MainActivity
protected void onCreate(final Bundle savedInstanceState){
...
AppCompatDialogFragment dialog = new MyDialog();
dialog.show(getSupportFragmentManager(),null);
}
MyDialog.java
public class MyDialog extends AppCompatDialogFragment{
@Override
public Dialog onCreateDialog(Bundle savedInstanceState){
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = requireActivity().getLayoutInflater();
// getActivity().getLayoutInflater();Aber ich habe es verstanden
builder.setView(inflater.inflate(R.layout.dialog_my,null))
.setPositiveButton("OK",new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialogInterface,int i){
//Verarbeitung beim Drücken der OK-Taste
}
}).setNegativeButton("cancel",new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialogInterface,int i){
//Verarbeitung beim Drücken der CANCEL-Taste
}
});
return builder.create();
}
}
dialog_my.xml
//Aufblasbares Layout
//Versuchen Sie, zwei EditText zu platzieren
<?xml version="1.0" encodeing="utf-8" ?>
<LinearLayout xmls: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/edit1"
android:inputType="numberPassword"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<EditText
android:id="@+id/edit2"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
Verfassung MainActivity.java MyDialog.java
MainActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyDialog dialog = new MyDialog();
dialog.show(getSupportFragmentManager(),null);
}
MyDialog
public class MyDialog extends AppCompatDialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
//Generieren Sie den Builder, um Dialogattribute usw. festzulegen
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LinearLayout linearLayout = new LinearLayout(getActivity());
linearLayout.setOrientation(LinearLayout.VERTICAL);
//TextView im Layout generiert
TextView textView = new TextView(getActivity());
textView.setText("TEXT");
textView.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
linearLayout.addView(textView);
//Generieren Sie EditText, um es für das Layout zu generieren
EditText editText = new EditText(getActivity());
editText.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
linearLayout.addView(editText);
builder
.setView(linearLayout)
.setTitle("sample")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//OK-Taste drücken Prozess
}
}).setNegativeButton("CANCELL", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//CANCEL-Taste drücken Verarbeitung
}
});
this.setCancelable(false);
return builder.create();
}
}