我正试图禁用用户在BottomSheet拖动。 我想禁用的原因是两件事。 1.防止ListView向下滚动,2.我不希望用户使用拖动,而是使用BottomSheetView上的button。 这就是我所做的 bottomSheetBehavior = BottomSheetBehavior.from(bottomAnc); bottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() { @Override public void onStateChanged(@NonNull View bottomSheet, int newState) { if (newState == BottomSheetBehavior.STATE_EXPANDED) { //Log.e("BottomSheet", "Expanded"); } else if (newState == BottomSheetBehavior.STATE_COLLAPSED) { //Log.e("BottomSheet", "Collapsed"); } } @Override public void onSlide(@NonNull View bottomSheet, float slideOffset) { // React to dragging events bottomSheet.setOnTouchListener(new View.OnTouchListener() { @Override […]
以前,我正在使用以下旧支持库“23.1.1”。 compile 'com.android.support:appcompat-v7:23.1.1' compile 'com.android.support:support-v4:23.1.1' compile 'com.android.support:preference-v7:23.1.1' compile 'com.android.support:preference-v14:23.1.1' compile 'com.android.support:design:23.1.1' compile 'com.android.support:recyclerview-v7:23.1.1' 它工作得很好。 这是我的RecyclerView样子 现在,我想迁移到“23.2.1”,由于一些错误修复。 compile 'com.android.support:appcompat-v7:23.2.1' compile 'com.android.support:support-v4:23.2.1' compile 'com.android.support:preference-v7:23.2.1' compile 'com.android.support:preference-v14:23.2.1' compile 'com.android.support:design:23.2.1' compile 'com.android.support:recyclerview-v7:23.2.1' 然而,突然之间,我所有的RecyclerView项目似乎都填满了RecyclerView整个高度。 以下是我的布局文件的代码片段: https : //gist.github.com/yccheok/241a0d38d56305a1be24d09b54eb1600 真正让我困惑的是,尽pipe我在回收器视图项目布局中使用了"wrap_content" ,但它并不像预期的那样工作。 我没有为我的RecyclerView使用任何自定义布局pipe理器。 从http://developer.android.com/tools/support-library/index.html ,我意识到23.2.1这次对RecyclerView做了很多改变。 修正了与各种度量规格方法有关的错误。 (问题201856) 减lessRecyclerView在计算布局或滚动时不允许适配器更改的locking期。 (问题202046) 修复了在视图外的项目上调用notifyItemChanged()时的崩溃。 (问题202136) 修复了RecyclerView.LayoutManager在同一测量阶段添加和删除视图时发生的崩溃。 (问题193958) 我最怀疑的是https://code.google.com/p/android/issues/detail?id=201856 ,因为它涉及到更改各种测量规格方法 到目前为止,我尝试用一个简单的RecyclerView项目来重现这个问题,使用23.2.1但是失败了! 它没有“项目填充RecyclerView全高”的问题。 我的猜测是,我的简单项目并不能模拟我的生产项目的复杂布局结构。 我的生产项目具有以下布局 <Activity> <Fragment> <View […]
我正在使用新的Androiddevise支持库中的CollapsingToolbarLayout。 我已经设置了它的标题,它工作正常,唯一的问题是,当你滚动,文本丢失,取决于在背景中的图像。 我想要做的是为CollapsingToolbarLayout标题设置一个背景,但是我没有find办法。 有没有办法做到这一点? 谢谢! 布局: <android.support.design.widget.CoordinatorLayout android:id="@+id/main_content" 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:fitsSystemWindows="true"> <android.support.design.widget.AppBarLayout android:id="@+id/appbar" android:layout_width="match_parent" android:layout_height="@dimen/detail_backdrop_height" 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="match_parent" android:fitsSystemWindows="true" app:contentScrim="?attr/colorPrimary" app:expandedTitleMarginEnd="64dp" app:expandedTitleMarginStart="48dp" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <ImageView android:id="@+id/ivBigImage" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" android:scaleType="centerCrop" app:layout_collapseMode="parallax"/> <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> </android.support.design.widget.AppBarLayout> <android.support.v4.widget.NestedScrollView android:layout_width="match_parent" android:layout_gravity="fill_vertical" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingTop="24dp"> <android.support.v7.widget.CardView android:id="@+id/cvDescription" […]
在我的应用程序中,我使用setExpanded(boolean, true)在特定事件上展开或收缩AppBarLayout 。 我有一个很好的结果,用com.android.support:design:23.1.0一个活泼和stream畅的animation,然后我更新到23.1.1和animation变得非常缓慢,不活泼。 在android.support.design.widget.AppBarLayout的源代码中,我将问题定位在animateOffsetTo (在public static class Behavior extends HeaderBehavior<AppBarLayout> ),在版本23.1.0中是这样的: private void animateOffsetTo(final CoordinatorLayout coordinatorLayout, final AppBarLayout child, int offset) { if (mAnimator == null) { mAnimator = ViewUtils.createAnimator(); mAnimator.setInterpolator(AnimationUtils.DECELERATE_INTERPOLATOR); mAnimator.setUpdateListener(new ValueAnimatorCompat.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimatorCompat animator) { setHeaderTopBottomOffset(coordinatorLayout, child, animator.getAnimatedIntValue()); } }); } else { mAnimator.cancel(); } mAnimator.setIntValues(getTopBottomOffsetForScrollingSibling(), offset); mAnimator.start(); } […]
devise支持库BottomSheetBehavior介绍了BottomSheetBehavior ,它允许一个协调器的孩子充当最底层(从屏幕底部可以拖动的视图)。 我想要做的是, 作为底部视图 ,有以下视图(典型的协调员+崩溃的东西): <CoordinatorLayout app:layout_behavior=“@string/bottom_sheet_behavior”> <AppBarLayout> <CollapsingToolbarLayout> <ImageView /> </CollapsingToolbarLayout> </AppBarLayout> <NestedScrollView> <LinearLayout> < Content … /> </LinearLayout> </NestedScrollView> </CoordinatorLayout> 不幸的是,底部视图应该实现嵌套滚动,否则他们不会得到滚动事件。 如果您尝试使用主要活动,然后将此视图作为底部表单加载,则会看到滚动事件仅作用于“纸张”上,出现了一些奇怪的行为,您可以看到是否继续阅读。 我很确定这可以通过inheritanceCoordinatorLayout来处理,或者通过BottomSheetBehavior 。 你有什么提示吗? 一些想法 应该使用requestDisallowInterceptTouchEvent()来在某些情况下从父requestDisallowInterceptTouchEvent()中窃取事件: 当AppBarLayout偏移量> 0时 当AppBarLayout偏移量是== 0,但我们正在滚动(想一下,你会看到) 第一个条件可以通过设置OnOffsetChanged到内部的应用程序栏获得; 第二个需要一些事件处理,例如: switch (MotionEventCompat.getActionMasked(event)) { case MotionEvent.ACTION_DOWN: startY = event.getY(); lastY = startY; userIsScrollingUp = false; break; case MotionEvent.ACTION_CANCEL: case MotionEvent.ACTION_UP: userIsScrollingUp […]
我正在使用Google支持devise库中的官方FloatingActionButton一个错误。 这是我的LogCat。 android.view.InflateException: Binary XML file line #34: Error inflating class android.support.design.widget.FloatingActionButton at android.view.LayoutInflater.createView(LayoutInflater.java:633) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) at android.view.LayoutInflater.rInflate(LayoutInflater.java:809) at android.view.LayoutInflater.inflate(LayoutInflater.java:504) at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(Native Method) at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:655) at android.view.LayoutInflater.inflate(Unknown Source) at android.view.LayoutInflater.inflate(LayoutInflater.java:414) at —.—.com.—.SubCategoryFragment.onCreateView(SubCategoryFragment.java:47) at android.support.v4.app.Fragment.performCreateView(Fragment.java:1789) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:955) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138) at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:740) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1501) at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:458) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5221) at […]
BottomNavigationView不显示不活动的菜单标题。 如何在bottomNavigationBar中显示所有菜单元素的标题? 问题是在我的情况下只显示被点击的元素的标题。