Versuchen Sie zu Verstehen, das Verhalten von BottomSheet im android-support-Bibliothek 23.2.1

Bin ich versucht zu implementieren Untere Blatt in einer meiner Tätigkeiten, und ich bin irgendwie verwirrt durch die Art und Weise verhält!

So, hier ist das problem, ich habe eine Tätigkeit, bei der ich versuche zu zeigen, Laken und ich sehe, dass:

  1. wenn wir nicht setzen die app:behavior_peekHeight Eigenschaft dann das Untere Blatt nie funktioniert

  2. Wenn Sie die PeekHeight etwas weniger als 30dp (im Grunde nur zum ausblenden von Bildschirm)

  3. Wenn Sie app:behavior_peekHeight mehr als 30dp in der layout-Datei und versuchen Sie, den Zustand der bottomSheetBehavior zu STATE_HIDDEN in Sie onCreate-Methode Ihrer app-Abstürze mit diesem Fehler

verursacht durch:

java.lang.NullPointerException: Attempt to invoke virtual method
'java.lang.Object java.lang.ref.WeakReference.get()' on a null object reference             at    android.support.design.widget.BottomSheetBehavior.setState(BottomSheetBehavior.jav    a:440)
at myapp.activity.SomeActivity.onCreate(SomeActivity.java:75)

Ich bin wirklich verwirrt, warum ist es nicht erlaubt mir, es zu verbergen, im onCreate? oder warum kann das setzen wir einfach die peekHeight 0, so dass es nicht auf dem Bildschirm sichtbar, es sei denn, wir nennen die STATE_EXPANDED oder gar nicht-Einstellung, die Eigenschaft sollte standardmäßig zu verbergen! oder atleast ich sollte in der Lage sein, um es als versteckt in meinem onCreate!

bin ich etwas fehlt? oder ist das Verhalten der BottomSheet starr?

meine layout-Datei für die BottomSheet ist so etwas wie dieses:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:background="@android:color/white"
android:layout_height="100dp"
android:orientation="vertical"
app:behavior_hideable="true"
app:behavior_peekHeight="40dp" <!-- I cant set this less than 30dp just to hide-->
app:layout_behavior="@string/bottom_sheet_behavior"
tools:context="someActivity"
android:id="@+id/addressbottomSheet"
tools:showIn="@layout/some_activity">

in meiner Tätigkeit bin ich etwas wie dieses:

@InjectView(R.id.addressbottomSheet)
 View bottomSheetView;
@Override
protected void onCreate(Bundle savedInstanceState) {
....
bottomSheetBehavior = BottomSheetBehavior.from(bottomSheetView);

//only if I have set peek_height to more than 30dp
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN); 
}

In meinem onclick-ich bin, dies zu tun:

@Override
public void onItemClick(View view, int position) {
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
}
  • Haben Sie herauszufinden, der Grund für den ersten Fall: wenn wir nicht setzen die app:behavior_peekHeight Eigenschaft dann das Untere Blatt nie funktioniert? ich habe in der gleichen.
  • diese Antwort könnte Ihnen helfen, stackoverflow.com/a/36236743/3000299
InformationsquelleAutor sujay | 2016-03-20
Schreibe einen Kommentar