📌  相关文章
📜  android.support.design.widget.coordinatorlayout androidx - Java (1)

📅  最后修改于: 2023-12-03 15:13:22.223000             🧑  作者: Mango

Android.support.design.widget.CoordinatorLayout androidx

Android.support.design.widget.CoordinatorLayout is a layout manager that is used as a parent layout. It is designed to coordinate its child views and events to provide a better user experience. It is a part of the Android Support Design library.

Key Features
  • It is designed to handle the complex layouts of modern Android applications.

  • Provides a mechanism for controlling layouts, animations, and transitions.

  • Supports the concept of "Behaviors" which allows customization of child views.

  • Provides an easy way to handle common UI elements such as Toolbars, Tabs, and Floating Action Buttons.

Implementation

To use the CoordinatorLayout, you need to add the Android Support Design dependency to your project. Here's how to add it to your build.gradle file:

implementation 'com.google.android.material:material:1.0.0'

After adding the dependency, you can use the CoordinatorLayout in your layout file like this:

<android.support.design.widget.CoordinatorLayout
    android:id="@+id/coordinator"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- Your child views -->

</android.support.design.widget.CoordinatorLayout>

You can also customize child views by adding behaviors to them. Here's how to customize a FloatingActionButton to hide and show when scrolling:

public class ScrollAwareFABBehavior extends FloatingActionButton.Behavior {
    public ScrollAwareFABBehavior(Context context, AttributeSet attrs) {
        super();
    }

    @Override
    public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout, FloatingActionButton child,
                                       View directTargetChild, View target, int axes, int type) {
        return axes == ViewCompat.SCROLL_AXIS_VERTICAL ||
                super.onStartNestedScroll(coordinatorLayout, child, directTargetChild, target, axes, type);
    }

    @Override
    public void onNestedScroll(CoordinatorLayout coordinatorLayout, FloatingActionButton fab,
                               View target, int dxConsumed, int dyConsumed,
                               int dxUnconsumed, int dyUnconsumed, int type) {
        if (dyConsumed > 0 && fab.getVisibility() == View.VISIBLE) {
            fab.hide();
        } else if (dyConsumed < 0 && fab.getVisibility() != View.VISIBLE) {
            fab.show();
        }
    }
}

You can set this behavior like this:

<android.support.design.widget.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|end"
    android:layout_margin="@dimen/fab_margin"
    android:src="@drawable/ic_add"
    app:layout_behavior="com.example.ScrollAwareFABBehavior" />
Conclusion

Android.support.design.widget.CoordinatorLayout is a powerful tool for building complex layouts and animations in Android applications. It provides a lot of flexibility and customization options that can help to improve the user experience. The use of behaviors makes it easy to customize child views to fit your needs.