我有两个工具栏(一个设置为"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一样.
我目前有一个带有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
我在尝试设置 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
我在 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 …
我想transparent AppBarLayout在我的应用程序中使用效果,应该很容易。
只是使background的AppBarLayout "@null"还是"@android:color:transparent"应该工作,但事实是我错了。
我在 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) 我们可以看到偏移量的变化,appBarLayout.addOnOffsetChangedListener但是如何以编程方式更改偏移量?像 appBarLayout.setOffset(y: Float) 这样的东西
android material-design android-coordinatorlayout android-appbarlayout
我想滚动用户说明,但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
我一直在玩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及其兄弟姐妹分配透明色?
谢谢.
我有一个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
我有一个具有协调器布局的活动,我有应用程序栏布局并包含滚动内容
默认情况下,应用程序栏布局的所有项目都是垂直排列的,当我覆盖应用程序栏布局的菜单项时,它是不可见的,因此我在应用程序栏布局中使用了一个按钮
我尝试通过在 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)
