Mentre la risposta di Sanfrds è corretta, non consente la possibilità di definire il Foglio di base come espanso per impostazione predefinita. Il problema è causato dal fatto che WeakReference non è impostato fino all'ultima riga di onLayoutChild.
La soluzione è fornire la nostra classe che estende BottomSheetBehavior, ma imposta lo stato all'interno di overLidden suLayoutChild. Il codice è fornito di seguito.
uk/ac/qub/quibe/misc/ExpandedBottomSheetBehavior.java
package uk.ac.qub.quibe.misc;
import android.content.Context;
import android.support.design.widget.CoordinatorLayout;
import android.util.AttributeSet;
import android.view.View;
/**
* Created by mcp on 15/03/16.
*/
public class ExpandedBottomSheetBehavior<V extends View> extends android.support.design.widget.BottomSheetBehavior<V> {
public ExpandedBottomSheetBehavior(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onLayoutChild(final CoordinatorLayout parent, final V child, final int layoutDirection) {
SavedState dummySavedState = new SavedState(super.onSaveInstanceState(parent, child), STATE_EXPANDED);
super.onRestoreInstanceState(parent, child, dummySavedState);
return super.onLayoutChild(parent, child, layoutDirection);
/*
Unfortunately its not good enough to just call setState(STATE_EXPANDED); after super.onLayoutChild
The reason is that an animation plays after calling setState. This can cause some graphical issues with other layouts
Instead we need to use setInternalState, however this is a private method.
The trick is to utilise onRestoreInstance to call setInternalState immediately and indirectly
*/
}
}
In riferimento riferimento file di layout il nuovo comportamento personalizzato.
Change
app:layout_behavior="android.support.design.widget.BottomSheetBehavior"
Per
app:layout_behavior="uk.ac.qub.quibe.misc.ExpandedBottomSheetBehavior"
Hai aggiunto 'app: layout_behavior =" @ string/bottom_sheet_behavior "' al tuo LinearLayout? – RafaelC
sì, ho seguito questo tutorial http://www.materialdoc.com/bottom-sheets/ – Sanf0rd
aggiungere un controllo NPE prima di chiamare l'ultima riga – Elltz