我正在使用设计支持库版本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
我使用FloatingActionButton
Google支持设计库中的官员收到了一个错误.
这是我的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
我试图禁用用户拖动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支持设计库(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
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
我正在使用新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
以前,我使用以下旧的支持库"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
这个时候做了很多改变.
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
在我的应用程序中,我使用扩展或收缩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) 我一直在使用支持库23.2中添加的新BottomSheetDialog ,但我想更改对话框的默认高度.我知道它可能与behavior_peekHeight
控制初始高度的属性有关,但是如何BottomSheetDialog
在我无法直接访问BottomSheetBehavior
?时设置它?