标签: android-appbarlayout

如何在Android中的CoordinateLayout中捕获滚动事件

我有两个工具栏(一个设置为"enterAlways",另一个设置为"scroll")和一个coordinatelayout中的recyclerview,我想要实现的是当recyclelerview没有滚动时捕获滚动事件,这意味着什么时候工具栏已被设置为"enterAlways"仍在滚动.

但是当我尝试使用coordinateLayout.setOnScrollChangeListener()时,它根本不起作用.

我的布局是这样的:

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

    <EndlessRecyclerView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
       app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#00ff0000"
        >
        <include      app:layout_behavior="com.viki.android.adapter.AbsListener"
            android:id="@+id/header_upper" layout="@layout/inlcude_channelheader_upper" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_scrollFlags="scroll"/>
        <include android:id="@+id/header_lower" layout="@layout/include_channelheader_lower" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_scrollFlags="enterAlways"/>

    </android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

我怎么能捕获滚动事件以及dx和dy的值,就像listview或recyclerview的onScrollListener一样.

android android-coordinatorlayout android-appbarlayout

3
推荐指数
1
解决办法
5131
查看次数

如何获得折叠工具栏布局的最大垂直偏移量

我目前有一个带有CollapsingToolbarLayout的AppBarLayout,我添加了一个OffSetChangeListener,所以当动作栏展开时我可以旋转我的appbar中的下拉箭头,现在一切正常,除了我需要最大垂直偏移才能计算度数旋转,它不作为参数在监听器中提供.这是我的代码:

appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
    @Override
    public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
        int slideOffset = verticalOffset*(-1);
        int slideOffsetMax = 750;

        int angle = slideOffset * 180 / slideOffsetMax;
        dropdownArrow.setRotation(angle);

    }

});
Run Code Online (Sandbox Code Playgroud)

问题是最大垂直偏移量取决于设备,但如果有人有其他方式实现这一点,请随时向我展示.ps:我将最大偏移量设置为750,因为我记录了偏移量以找到我的设备的最大值,但在我的平板电脑上却有所不同.

java android android-collapsingtoolbarlayout android-appbarlayout

3
推荐指数
1
解决办法
2011
查看次数

Android:尝试获取 AppBarLayout LayoutParams 时应用程序崩溃

我在尝试设置 AppBarLayout 参数时遇到 ClassCastException。下面是我的 XML 代码

<android.support.design.widget.CoordinatorLayout 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:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context="com.example.testapp.ConsoleActivity">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="280dp"
        android:theme="@style/AppTheme.AppBarOverlay"
        android:id="@+id/app_bar_layout">

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsing_toolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:contentScrim="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

            <android.support.v4.view.ViewPager
                android:layout_width="match_parent"
                android:layout_height="220dp"
                android:id="@+id/app_bar_account_cards_pager"
                app:layout_collapseMode="parallax"
                android:layout_marginTop="?attr/actionBarSize" />

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:background="?attr/colorPrimary"
                app:popupTheme="@style/AppTheme.PopupOverlay"
                app:layout_collapseMode="pin" />

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

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

    <android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:clipToPadding="false"
        android:id="@+id/nested_scroll_bar"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <include layout="@layout/content_console"
            android:layout_height="match_parent"
            android:layout_width="match_parent"/>

    </android.support.v4.widget.NestedScrollView>



</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用以下 java 代码获取 AppBarLayoutParams 的实例

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
AppBarLayout.LayoutParams p = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
p.setScrollFlags(0);
toolbar.setLayoutParams(p);
Run Code Online (Sandbox Code Playgroud)

但我正在接受java.lang.ClassCastException: android.support.design.widget.CollapsingToolbarLayout$LayoutParams cannot be cast to android.support.design.widget.AppBarLayout$LayoutParams这条线 …

android android-toolbar android-collapsingtoolbarlayout android-appbarlayout

3
推荐指数
1
解决办法
2065
查看次数

LinearLayoutmaneger.findLastCompletelyVisibleItemPosition 在 coordinatorLayout 中返回错误值

我在 coordinatorLayout 中有一个 recyclerView,我想从中获取最后一个可见的 Item:

<?xml version="1.0" encoding="utf-8"?><android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<android.support.design.widget.AppBarLayout
    android:id="@+id/appbarLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorPrimary"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    >

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/main.collapsing"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:background="#f00"
        app:layout_scrollFlags="scroll|exitUntilCollapsed">

    </android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>

<android.support.v7.widget.RecyclerView
    android:scrollbars="none"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    android:id="@+id/recyclerView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/lastVisibleItem"
    android:text="last position"
    />


 </android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

findViewById(R.id.lastVisibleItem).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            int position=((LinearLayoutManager) mRecyclerView.getLayoutManager()).findLastCompletelyVisibleItemPosition();

            Log.d(TAG, "onClick: position="+position);
            Toast.makeText(RecyclerViewActivity.this, "position="+position, Toast.LENGTH_SHORT).show();
        }
    });
Run Code Online (Sandbox Code Playgroud)

问题出在 start findLastCompletelyVisibleItemPosition() 方法返回中,例如,14 是错误的,12是正确的,在我向下滚动到第 14 项后,findLastCompletelyVisibleItemPosition() 再次返回 14。
我知道这是因为 AppBarLayout 和 CoordinatorLayout …

android android-coordinatorlayout android-appbarlayout

3
推荐指数
1
解决办法
1369
查看次数

无法使 AppBarLayout 透明

我想transparent AppBarLayout在我的应用程序中使用效果,应该很容易。

只是使backgroundAppBarLayout "@null"还是"@android:color:transparent"应该工作,但事实是我错了。

我在 AppBarLayout 中得到了奇怪的阴影。

AppBarLayout 背景不透明

我的布局xml:

   <android.support.design.widget.CoordinatorLayout 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:layout_height="match_parent"
    android:fitsSystemWindows="true">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@null">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:layout_scrollFlags="scroll|enterAlways" />

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


</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

活动代码

   public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getWindow().setBackgroundDrawableResource(R.drawable.bg_005);
        setTranslucent(this);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            WindowManager.LayoutParams localLayoutParams = getWindow().getAttributes();
            localLayoutParams.flags = (WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | localLayoutParams.flags);
        }
    }

    public static void setTranslucent(Activity activity) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-appbarlayout

3
推荐指数
1
解决办法
956
查看次数

如何以编程方式更改 AppBarLayout 偏移量?

我们可以看到偏移量的变化,appBarLayout.addOnOffsetChangedListener但是如何以编程方式更改偏移量?像 appBarLayout.setOffset(y: Float) 这样的东西

android material-design android-coordinatorlayout android-appbarlayout

3
推荐指数
1
解决办法
1270
查看次数

layout_scrollFlags不适用于CollapsingToolbarLayout之外的视图

我想滚动用户说明,但layout_scrollFlags ="滚动"不适用于RelativeLayout.ViewPager有2个片段,里面有SwipeRefreshLayout和RecyclerView.如何在CollapsingToolbar exitUntilCollapsed时滚出描述?

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/coordinator"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">

<android.support.design.widget.AppBarLayout
    android:id="@+id/app_bar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:fitsSystemWindows="true"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/collapsing_toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fitsSystemWindows="true"
        app:contentScrim="?attr/colorPrimary"
        app:layout_scrollFlags="scroll|exitUntilCollapsed">

        <ImageView
            android:id="@+id/user_background"
            android:layout_width="match_parent"
            android:layout_height="192dp"
            android:fitsSystemWindows="true"
            app:layout_collapseMode="parallax" />

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            android:layout_marginBottom="@dimen/keyline_1">

            <ImageView
                android:id="@+id/avatar"
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:layout_marginLeft="@dimen/keyline_1"
                android:layout_marginStart="@dimen/keyline_1" />

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="@dimen/keyline_1"
                android:layout_marginStart="@dimen/keyline_1"
                android:layout_toEndOf="@id/avatar"
                android:layout_toRightOf="@id/avatar"
                android:orientation="vertical">

                <TextView
                    android:id="@+id/full_name"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="@style/TextAppearance.AppCompat.Body2" />

                <TextView
                    android:id="@+id/screen_name"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="@style/TextAppearance.AppCompat.Body1" />

            </LinearLayout>

        </RelativeLayout>

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:layout_collapseMode="pin"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

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

    <RelativeLayout
        android:id="@+id/information"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_scrollFlags="scroll">

        <TextView
            android:id="@+id/bio"
            android:layout_width="wrap_content" …
Run Code Online (Sandbox Code Playgroud)

android-design-library androiddesignsupport android-collapsingtoolbarlayout android-appbarlayout android-tablayout

2
推荐指数
1
解决办法
6249
查看次数

AppBarLayout透明度

我一直在玩AppBarLayout,但我找不到让它的背景透明的方法.

这就是我的意思:

在此输入图像描述

这是我的XML:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout 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:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context=".MainActivity">


    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:overScrollMode="never"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:elevation="0dp"
        android:background="@android:color/transparent">

        <TextView
            android:id="@+id/toolbar"
            app:elevation="0dp"
            android:text="hey"
            android:textColor="@android:color/white"
            android:layout_width="match_parent"
            android:layout_height="45dp"
            android:background="#8000CDFE"
            app:layout_scrollFlags="scroll|enterAlways"/>

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

</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

正如你所看到我使用的颜色#8000CDFE应该给我50%的透明度,但由于某种原因它没有.我已经尝试将透明背景设置为AppBarLayout,但它也没有多大帮助.

有人遇到过这个问题吗?反正有没有为AppBarLayout及其兄弟姐妹分配透明色?

谢谢.

xml android material-design android-appbarlayout

2
推荐指数
1
解决办法
4086
查看次数

检测RecyclerView的顶部?

我有一个RecyclerView,首先它向下滚动,现在当我们向上滚动时,它达到最高点.我想检测一下.有什么办法吗?我有AppBar,其高度大于设备宽度.因此它会导致滚动.我想通过顶部达到听众手动扩展AppBar以避免投掷.

    if (layoutManager.firstCompletelyVisibleItemPosition() == 0) {
    //this is the top of the RecyclerView 
    }
Run Code Online (Sandbox Code Playgroud)

这个代码我已经使用但我的问题是我在放入此代码后无法向上滚动RecyclerView.因为我的RecyclerView使用GridLayoutManager有3列.

android onscrolllistener android-recyclerview android-appbarlayout

2
推荐指数
1
解决办法
3918
查看次数

如何将应用栏布局的内容水平对齐

我有一个具有协调器布局的活动,我有应用程序栏布局并包含滚动内容

默认情况下,应用程序栏布局的所有项目都是垂直排列的,当我覆盖应用程序栏布局的菜单项时,它是不可见的,因此我在应用程序栏布局中使用了一个按钮

我尝试通过在 xml 中写入来将方向更改为水平,但滚动内容来自应用栏布局

请帮助我纠正这个问题以及如何包含此布局的菜单项

XML

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
        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:layout_height="match_parent"
        tools:context=".AddItem">


    <android.support.design.widget.AppBarLayout
            android:layout_height="wrap_content"
            android:layout_width="match_parent"
            android:minHeight="?attr/actionBarSize"
            android:theme="?attr/actionBarTheme"
            android:background="#252A4E">

        <TextView
                android:text="Item :"
                android:layout_marginLeft="4pt"
                android:gravity="center"
                android:layout_width="wrap_content"
                android:layout_height="25pt" android:id="@+id/tvItem"
                android:layout_gravity="center_vertical"
                android:textColor="#F8F6F6" android:textSize="15pt"
                app:fontFamily="@font/averia_libre" />
        <TextView
                android:text="1"
                android:layout_marginLeft="4pt"
                android:gravity="center"
                android:layout_width="wrap_content"
                android:layout_height="25pt" android:id="@+id/tvElevatorNo"
                android:layout_gravity="center_vertical"
                android:textColor="#F8F6F6" android:textSize="15pt"
                app:fontFamily="@font/averia_libre"/>
        <ImageButton
                android:layout_marginLeft="72pt"
                android:onClick="AddElevator"
                android:layout_gravity="end"
                android:layout_width="62dp"
                android:layout_height="match_parent" app:srcCompat="@drawable/baseline_done_white_18dp"
                android:id="@+id/ibComplete" tools:srcCompat="@drawable/baseline_done_white_18dp"
                android:tint="#F9FBE7" android:background="#252A4E"/>


    </android.support.design.widget.AppBarLayout>
    <include layout="@layout/content_add_item" android:layout_height="674dp"/>

</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

图像

layout android android-appbarlayout

2
推荐指数
1
解决办法
1874
查看次数