Voglio provare BottomSheetDialog introdotto nella libreria di supporto Android 23.2 ma non sembra funzionare correttamente. Ecco ciò che il dottore dice:Come utilizzare BottomSheetDialog?
Mentre BottomSheetBehavior cattura caso lenzuolo di sotto persistente, questa versione offre anche un BottomSheetDialog e BottomSheetDialogFragment per riempire i fogli inferiori modali caso d'uso. Sostituire semplicemente AppCompatDialog o AppCompatDialogFragment con gli equivalenti del foglio inferiore per avere la finestra di dialogo come foglio in basso . "
Così ho cambiato la mia AppCompatDialog
a BottomSheetDialog
:
package my.package.ui.dialog;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.design.widget.BottomSheetDialog;
import my.package.R;
public class AccountActionsDialog extends BottomSheetDialog {
public AccountActionsDialog(Context context) {
super(context);
if (context instanceof Activity) {
setOwnerActivity((Activity) context);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getLayoutInflater().inflate(R.layout.dialog_account_actions, null));
}
}
Ecco il mio file di layout:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ff0000"
android:padding="16dp"
android:text="Delete account"
android:textColor="#ffffff" />
</LinearLayout>
Poi ho utilizzare il seguente codice nella mia attività:
new AccountActionsDialog(this).show();
Lo schermo si oscura ma il contenuto della mia finestra di dialogo non è visibile. Qualche idea su cosa potrebbe mancare? Funziona bene quando uso invece AppCompatDialog.
C'è un motivo particolare non si utilizza 'setContentView (R.layout.dialog_account_actions)'? – ianhanniballake
Sì. Inizialmente ho gonfiato la vista radice e ho utilizzato findViewById() per trovare tutti i sottoview di cui ho bisogno e impostare i listener appropriati per loro. Ho semplificato il codice per questo esempio e ho dimenticato di cambiare questa parte. Il problema rimane, indipendentemente dal modo in cui è impostato il layout. –
Questo è sicuramente un bug nella libreria di supporto - per favore archivene uno su b.android.com con un piccolo progetto di esempio e includi un link qui così posso portarlo in squadra - per un comportamento ancora più pazzo - imposta il tuo ' LinearLayout' ad un'altezza di ~ 250 dpi. – ianhanniballake