Je suis nouveau dans Android et j'ai des problèmes avec les comportements FloatingActionButton
Ma classe de comportement personnalisé:
public class ScrollingFABBehavior extends FloatingActionButton.Behavior {
private static final String TAG = "ScrollingFABBehavior";
public ScrollingFABBehavior(Context context, AttributeSet attrs,
Handler mHandler) {
super();
}
@Override
public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout,
FloatingActionButton child, View directTargetChild, View target,
int nestedScrollAxes) {
return nestedScrollAxes == ViewCompat.SCROLL_AXIS_VERTICAL
|| super.onStartNestedScroll(coordinatorLayout, child,
directTargetChild, target, nestedScrollAxes);
}
@Override
public void onNestedScroll(CoordinatorLayout coordinatorLayout,
FloatingActionButton child, View target, int dxConsumed,
int dyConsumed, int dxUnconsumed, int dyUnconsumed) {
super.onNestedScroll(coordinatorLayout, child, target, dxConsumed,
dyConsumed, dxUnconsumed, dyUnconsumed);
if (dyConsumed > 0 && child.getVisibility() == View.VISIBLE) {
child.hide();
} else if (dyConsumed < 0 && child.getVisibility() == View.GONE) {
child.show();
}
}
@Override
public void onStopNestedScroll(CoordinatorLayout coordinatorLayout,
FloatingActionButton
child, View target) {
super.onStopNestedScroll(coordinatorLayout, child, target);
}
}
Fragment XML:
...
<Android.support.design.widget.FloatingActionButton
Android:id="@+id/share_fab"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="bottom|end"
Android:layout_margin="@dimen/fab_margin"
Android:contentDescription="@string/action_share"
Android:elevation="@dimen/fab_elevation"
Android:src="@drawable/ic_share"
app:layout_behavior=".ScrollingFABBehavior"/>
</Android.support.design.widget.CoordinatorLayout>
RuntimeError lorsque le fragment gonfle le xml:
07-14 08:52:43.904 30785-30785/com.example.xyzreader E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.xyzreader, PID: 30785
Android.view.InflateException: Binary XML file line #115: Could not inflate Behavior subclass com.example.xyzreader.ui.ScrollingFABBehavior
Caused by: Java.lang.RuntimeException: Could not inflate Behavior subclass com.example.xyzreader.ui.ScrollingFABBehavior
at Android.support.design.widget.CoordinatorLayout.parseBehavior(CoordinatorLayout.Java:615)
at Android.support.design.widget.CoordinatorLayout$LayoutParams.<init>(CoordinatorLayout.Java:2652)
etc
Qu'est-ce qui ne va pas?
Ajoutez les deux constructeurs suivants à votre FooterBehavior
:
public FooterBehavior() {
}
public FooterBehavior(Context context, AttributeSet attrs) {
super(context, attrs);
}
Si vous utilisez AndroidX (projet open-source que l'équipe Android utilise pour développer, tester, empaqueter, versions et versions des bibliothèques dans Jetpack), vous devez mettre à jour XML.
Trouvez votre élément ici et remplacez:
Soutien:
Android.support.design.widget.FloatingActionButton
AndroidX:
com.google.Android.material.floatingactionbutton.FloatingActionButton
Assurez-vous que vous utilisez le chemin d'accès correct de la classe de comportement personnalisé.
Par exemple:
app:layout_behavior="net.company.myapp.view.behavior.TextViewBehavior"
Résolu. Changement app:layout_behavior=".ScrollingFABBehavior"/>
à app:layout_behavior=".ui.ScrollingFABBehavior"/>