私はAndroidとFloatingActionButton
behaivorsに問題があります
私のカスタム行動クラス:
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);
}
}
フラグメント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>
XmlがinflateするときのRuntimeError:
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)
等
どうしましたか?
次の2つのコンストラクターをFooterBehavior
に追加します。
public FooterBehavior() {
}
public FooterBehavior(Context context, AttributeSet attrs) {
super(context, attrs);
}
AndroidX(AndroidチームがJetpack内でライブラリを開発、テスト、パッケージ、バージョン、リリースするために使用するオープンソースプロジェクト)を使用している場合、XMLを更新する必要があります。
要素を見つけてください here を置き換えてください:
サポート:
Android.support.design.widget.FloatingActionButton
AndroidX:
com.google.Android.material.floatingactionbutton.FloatingActionButton
カスタム動作クラスの正しいパスを使用していることを確認してください。
例えば:
app:layout_behavior="net.company.myapp.view.behavior.TextViewBehavior"
解決しました。変化する app:layout_behavior=".ScrollingFABBehavior"/>
からapp:layout_behavior=".ui.ScrollingFABBehavior"/>