标签: android-support-design

如何禁用BottomNavigationView转换模式?

BottomNavigationView不显示不活动的菜单标题.

如何在bottomNavigationBar中显示所有菜单元素的标题?问题是在我的情况下只显示了点击元素的标题.

在此输入图像描述

android android-support-design bottomnavigationview

139
推荐指数
10
解决办法
7万
查看次数

BottomNavigationView始终显示图标和文本标签

我正在使用设计支持库版本25中的android.support.design.widget.BottomNavigationView

compile 'com.android.support:design:25.0.0'

<android.support.design.widget.BottomNavigationView
        android:id="@+id/bottomBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_gravity="center"
        app:itemBackground="@color/colorPrimary"
        app:menu="@menu/bottom_navigation_main"
        android:forceHasOverlappingRendering="true"/>
Run Code Online (Sandbox Code Playgroud)

当@ menu/bottom_navigation_main中只有三个动作时,它会一直显示图标和文本标签.

当有三个以上的操作时,始终显示图标和文本标签的方法是什么.

android android-support-library android-support-design bottomnavigationview

89
推荐指数
8
解决办法
5万
查看次数

使用官方设计库中的FloatingActionButton进行InflateException

我使用FloatingActionButtonGoogle支持设计库中的官员收到了一个错误.

这是我的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 java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:117)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
at android.view.LayoutInflater.createView(LayoutInflater.java:607)
... 24 more …
Run Code Online (Sandbox Code Playgroud)

android android-appcompat inflate-exception floating-action-button android-support-design

87
推荐指数
4
解决办法
6万
查看次数

禁用用户在BottomSheet上拖动

我试图禁用用户拖动BottomSheet.我想禁用的原因是两件事.1.它阻止ListView向下滚动,2.我不希望用户使用拖动但是使用按钮来解除BottomSheetView.这就是我所做的

 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
                public boolean onTouch(View v, MotionEvent event) {
                    int action = MotionEventCompat.getActionMasked(event);
                    switch (action) {
                        case MotionEvent.ACTION_DOWN:
                            return false;
                        default:
                            return true;
                    } …
Run Code Online (Sandbox Code Playgroud)

android android-support-library android-support-design

83
推荐指数
13
解决办法
5万
查看次数

将BottomSheetDialogFragment的状态设置为展开

如何使用Android支持设计库(v23.2.1)将片段的状态设置为扩展BottomSheetDialogFragment为扩展BottomSheetBehavior#setState(STATE_EXPANDED)

https://code.google.com/p/android/issues/detail?id=202396说:

底部工作表首先设置为STATE_COLLAPSED.如果要展开它,请调用BottomSheetBehavior#setState(STATE_EXPANDED).请注意,您无法在视图布局之前调用该方法.

建议的做法需要将第一膨胀的观点,但我不知道我怎么会设置BottomSheetBehaviour到片段(BottomSheetDialogFragment).

View bottomSheet = coordinatorLayout.findViewById(R.id.bottom_sheet);  
BottomSheetBehavior behavior = BottomSheetBehavior.from(bottomSheet);  
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-support-library android-support-design

66
推荐指数
12
解决办法
5万
查看次数

将BottomSheetBehavior与内部CoordinatorLayout一起使用

v. 23.2引入了设计支持库BottomSheetBehavior,它允许协调员的子节点作为底部工作表(可从屏幕底部拖动​​的视图).

我想做的是作为底层视图,具有以下视图(典型的协调器+折叠的东西):

<CoordinatorLayout
    app:layout_behavior=“@string/bottom_sheet_behavior”>

   <AppBarLayout>
        <CollapsingToolbarLayout>
           <ImageView />
        </CollapsingToolbarLayout>
    </AppBarLayout>

    <NestedScrollView>
        <LinearLayout>
            < Content ... />
        </LinearLayout>
    </NestedScrollView>

</CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

不幸的是,底部工作表视图应该实现嵌套滚动,否则它们不会获得滚动事件.如果您尝试使用主活动然后将此视图作为底部工作表加载,您将看到滚动事件仅作用于纸张的"工作表",并且有一些奇怪的行为,您可以看到是否继续阅读.

我很确定这可以通过子类化来处理CoordinatorLayout,甚至可以通过子类化来处理BottomSheetBehavior.你有什么提示吗?

一些想法

  • 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 = false;
            break;
        case MotionEvent.ACTION_MOVE:
            lastY = event.getY();
            float yDeltaTotal = startY - lastY; …
    Run Code Online (Sandbox Code Playgroud)

android ontouchlistener touch-event android-support-library android-support-design

54
推荐指数
1
解决办法
9030
查看次数

Android CollapsingToolbarLayout标题背景

我正在使用新Android设计支持库中的CollapsingToolbarLayout.

我已经设置了它的标题并且它工作正常,我仍然唯一的问题是当你滚动时,文本会丢失,具体取决于背景中的图像.

我想做的是设置CollapsingToolbarLayout标题的背景,但我还没有办法做到这一点.

反正有没有实现这个目标?

谢谢!

布局:

<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"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="10dp">

            <LinearLayout
                style="@style/Image.Info.CardContent"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="@string/description"
                    android:textAppearance="@style/TextAppearance.AppCompat.Title"/>

                <TextView
                    android:id="@+id/tvDescription"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text=""/>

            </LinearLayout>

        </android.support.v7.widget.CardView>


    </LinearLayout>

</android.support.v4.widget.NestedScrollView>
Run Code Online (Sandbox Code Playgroud)

在活动中设置CollapsingToolbarLayout标题:

CollapsingToolbarLayout collapsingToolbar = …
Run Code Online (Sandbox Code Playgroud)

android android-styles android-support-design android-collapsingtoolbarlayout

46
推荐指数
2
解决办法
3万
查看次数

将支持库从"23.1.1"升级到"23.2.1"后,Recycler视图项填满整个回收站视图高度

以前,我使用以下旧的支持库"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'
Run Code Online (Sandbox Code Playgroud)

它工作得很好.这就是我的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'
Run Code Online (Sandbox Code Playgroud)

然而,突然之间,我所有的RecyclerView物品,似乎都填满了RecyclerView整个高度.

在此输入图像描述

在此输入图像描述

这是我的布局文件的代码片段:https://gist.github.com/yccheok/241a0d38d56305a1be24d09b54eb1600

让我感到困惑的是,尽管我"wrap_content"在我的回收站视图项目布局中使用它,但它并没有按预期工作.

我没有使用任何自定义布局管理器RecyclerView.

http://developer.android.com/tools/support-library/index.html,我意识到23.2.1在RecyclerView这个时候做了很多改变.

  • 修复了与各种测量规范方法相关的错误.(问题201856)
  • RecyclerView在计算布局或滚动时减少了不允许适配器更改的锁定时间.(问题202046)
  • 修复了调用notifyItemChanged()不在视图中的项目时发生崩溃的问题.(问题202136)
  • 修复了RecyclerView.LayoutManager在同一测量过程中添加和删除视图时发生的崩溃.(问题193958)

我最怀疑的是https://code.google.com/p/android/issues/detail?id=201856,因为它涉及更改各种测量规范方法

到目前为止,我尝试使用一个简单的RecyclerView项目重现问题,使用23.2.1但是失败了!它没有"项目填满RecyclerView整个高度"的问题.我的猜测是,我的简单项目不能模拟生产项目的复杂布局结构.我的制作项目有以下布局

<Activity>
    <Fragment>
        <View Pager>
            <Fragment>
                <RecyclerView />
            </Fragment>
        </View Pager>
    </Fragment>
</Activity>
Run Code Online (Sandbox Code Playgroud)

经过几个小时的调试,我还是找不到这个问题的根本原因,有什么提示吗? …

android android-support-library android-recyclerview android-support-design

44
推荐指数
4
解决办法
3万
查看次数

AppBarLayout.setExpanded(boolean,true)支持库23.1.1中的奇怪动画

在我的应用程序中,我使用扩展或收缩AppBarLayout特定事件setExpanded(boolean, true).

我得到了一个很好的结果,使用了一个活泼动人的流体动画com.android.support:design:23.1.0,然后我更新到23.1.1了,动画变得非常缓慢而且根本没有活泼.

在源代码中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();
}
Run Code Online (Sandbox Code Playgroud)

在版本23.1.1中是这样的:

private void animateOffsetTo(final CoordinatorLayout coordinatorLayout,
    final AppBarLayout child, final int offset) {
   final …
Run Code Online (Sandbox Code Playgroud)

android android-support-library android-support-design

43
推荐指数
1
解决办法
3257
查看次数

如何更改BottomSheetDialog的默认高度?

我一直在使用支持库23.2中添加的新BottomSheetDialog ,但我想更改对话框的默认高度.我知道它可能与behavior_peekHeight控制初始高度的属性有关,但是如何BottomSheetDialog在我无法直接访问BottomSheetBehavior?时设置它?

android android-support-library android-support-design

40
推荐指数
7
解决办法
3万
查看次数