Chcę spróbować BottomSheetDialog wprowadzono w bibliotece pomocy technicznej systemu Android 23.2, ale wydaje się, że nie działa poprawnie. Oto co mówi doc:Jak korzystać z BottomSheetDialog?
Podczas BottomSheetBehavior oddaje uporczywy dolną część obudowy arkuszy, ta wersja oferuje także BottomSheetDialog i BottomSheetDialogFragment wypełnić arkusze modalne dolne używać sprawy. Po prostu zastąp AppCompatDialog lub AppCompatDialogFragment z ich odpowiednikami w dolnej części , aby Twoje okno dialogowe było w stylu dolnego arkusza . "
Więc zmieniłem AppCompatDialog
do 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));
}
}
Oto mój plik układ:
<?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>
Następnie używam następujący kod w mojej działalności:
new AccountActionsDialog(this).show();
Mój ekran zostaje przyciemniony, ale zawartość mojego okna dialogowego nie jest widoczna. Jakieś myśli o tym, czego może brakować? Działa to dobrze, gdy używam zamiast tego AppCompatDialog.
Czy istnieje szczególny powód nie używasz 'setContentView (R.layout.dialog_account_actions)'? – ianhanniballake
Tak. Początkowo najpierw nadpisałem widok główny i użyłem findViewById(), aby znaleźć wszystkie subviews, których potrzebuję i ustawić dla nich odpowiednie detektory. Uprośniłem kod tego przykładu i zapomniałem zmienić tę część. Problem pozostaje bez względu na to, jak układ jest ustawiony. –
To zdecydowanie jest błąd w bibliotece pomocy technicznej - zrób jeden plik na b.android.com z małym przykładowym projektem i umieść w nim link, dzięki czemu mogę go przekazać zespołowi - aby uzyskać jeszcze bardziej szalone zachowanie - ustaw twoje " LinearLayout' do wysokości ~ 250dp. – ianhanniballake