Infine penso di aver fatto quello che ci si aspetta. anche io ho aggiunto poche risposte a questa stessa domanda, aggiungo questa risposta come una risposta separata per essere più chiara a voi.
suo sporco UI, ho preparato molto rushy. Puoi vedere lo StackBar
nella parte inferiore dello schermo. Viene visualizzato quando si fa clic sul pulsante OK
dello AlertDialog
Ecco come l'ho fatto.
seguente codice appartiene a custom_dialog_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"/>
<TextView
android:id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@android:color/black"
android:text="Sample Test for Custom Dialog"
android:textSize="20sp"
android:layout_toRightOf="@+id/image"
android:layout_alignBottom="@+id/image" />/>
<Button
android:id="@+id/dialogButtonOK"
android:layout_width="100px"
android:layout_height="wrap_content"
android:text=" Ok "
android:layout_below="@+id/text"
android:layout_centerHorizontal="true" />
seguente codice appartiene a activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:id="@+id/rootView"
tools:context="com.stackoverflow.answer.androidcustomdialog.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
seguente codice appartiene a MainActivity.java
012.
package com.stackoverflow.answer.androidcustomdialog;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final View rootView=(View)findViewById(R.id.rootView);
AlertDialog.Builder mAlertDialogBuilder = new AlertDialog.Builder(this);
// inflate the custom dialog view
LayoutInflater inflater=getLayoutInflater();
final View mDialogView = inflater.inflate(R.layout.custom_dialog_layout, null);
// set the View for the AlertDialog
mAlertDialogBuilder.setView(mDialogView);
Button btn = (Button) mDialogView.findViewById(R.id.dialogButtonOK);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Pass the RootView to the SnackBar
Snackbar
.make(rootView, "SnackBar in Dialog", Snackbar.LENGTH_LONG)
.show();
}
});
AlertDialog alertDialog = mAlertDialogBuilder.create();
alertDialog.show();
}
}
Sentiti libero di chiedere tutto ciò di cui hai bisogno. In questo esempio non ho usato i frammenti. Se hai bisogno, posso aiutarti anche con quello. e inoltre posso inviare il progetto se ne hai bisogno. dammi la tua email :)
Come riassunto, quello che ho davvero fatto è, basta passare la vista Layout RooT allo SnackBar
. È semplice.
Ancora una cosa ..
Secondo la Google Material Design Snackbars & Toasts Usage Riferimento
Posizionamento
snackbars appaiono sopra la maggior parte degli elementi su schermo, e sono uguali in elevazione al pulsante di azione flottante. Tuttavia, sono più bassi nell'elevazione di rispetto a finestre di dialogo, fogli di fondo e cassetti di navigazione.
Quindi lo Snackbar apparirà sempre di livello inferiore in altezza rispetto alle finestre di dialogo.
dialogo Usa personalizzato con layout personalizzato che ha match_parent altezza e cercare di impostare il layout di sfondo trasparente per avere la stessa sensazione della finestra di dialogo predefinita di Android. – Drv
La finestra di dialogo dall'immagine sopra ha già i valori di larghezza e altezza impostati su 'match_parent' – roroinpho21
Ho modificato la mia risposta, potresti controllare –