我在Google IO repo中使用了以下代码:https://github.com/google/iosched/blob/master/android/src/main/java/com/google/samples/apps/iosched/ui/BaseActivity.java
我试图在向上滚动时隐藏工具栏,它工作得很好,但我的问题是,当工具栏在屏幕外动画时,我的主要内容保持不变。
在R.id.toolbar_actionbar上运行动画的代码是:
view.animate()
.translationY(-view.getBottom())
.alpha(0)
.setDuration(HEADER_HIDE_ANIM_DURATION)
.setInterpolator(new DecelerateInterpolator());
我试着把工具栏放在一个带有内容的线性布局中,但它没有改变任何东西。只有将actionbar设置为visibility=gone,内容才会向上移动。
有人知道我必须做什么才能使内容与工具栏的翻译动画一起动画吗?
基本上,问题归结为:如何设置一个视图的位置动画,并使用它设置其他视图的动画?
谷歌IO代码似乎只是为工具栏设置了动画,其他内容也随之设置了动画,但我无法让它发挥作用。
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<include
android:id="@+id/toolbar_actionbar"
layout="@layout/toolbar_actionbar" />
<FrameLayout
android:id="@+id/main_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/adsContainer"
android:layout_below="@+id/toolbar_actionbar" />
<LinearLayout
android:id="@+id/adsContainer"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="#000000"
android:orientation="horizontal" />
</RelativeLayout>
<!-- The navigation drawer -->
<ExpandableListView
android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="#111"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp" />
</android.support.v4.widget.DrawerLayout>
当列表视图向上滚动时,即使actionbar(appcompat v7工具栏小部件)向上滑动,我也会遇到同样的问题,内容仍然停留在原来的位置。
遵循Christer的活动布局。
这可能是肮脏的修复,也可能是我弄乱了我的布局。但仍然在这里发布以获得更好的解决方案。所以这里是:
我的Content(片段布局)根元素是这样的:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_content_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="?attr/actionBarSize" >
............
我的活动布局是这样的:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<include
android:id="@+id/toolbar_actionbar"
layout="@layout/action_bar" />
</RelativeLayout>
.........other stuff.........
肮脏的修复方法是在片段布局中引入一个假工具栏,并将其保持在顶部。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_content_view"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<View
android:id="@+id/fakeToolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:layout_alignParentTop="true" />
.............Other elements like ListView/GridView below this........
in-onscroll方法使fakeToolbar可见/不可见,同时使实际工具栏上下滑动:
mToolbar.animate().translationY(0).alpha(1)
.setDuration(HEADER_HIDE_ANIM_DURATION)
.setInterpolator(new DecelerateInterpolator()).withStartAction(new Runnable() {
@Override
public void run() {
fakeToolbar.setVisibility(View.VISIBLE);
}
});
此修复程序在滚动时使布局平稳过渡。
可以使用以下小片段设置视图高度的动画:
public void animateHeight(final View view, int from, int to, int duration) {
ValueAnimator anim = ValueAnimator.ofInt(from, to);
anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
int val = (Integer) valueAnimator.getAnimatedValue();
ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
layoutParams.height = val;
view.setLayoutParams(layoutParams);
}
});
anim.setDuration(duration);
anim.start();
}
打电话给它看起来像这样:
View view = findViewById(R.id.view);
// Wait for layout to be drawn before measuring it
view.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
@Override
public void onLayoutChange(View view, int i, int i2, int i3, int i4, int i5, int i6, int i7, int i8) {
view.removeOnLayoutChangeListener(this);
animateHeight(view, view.getHeight(), 0, 5000);
}
});
当想下滚动页面的时候,Framework7可以让导航栏和工具栏自动隐藏。 如果你想全局启用这个功能,你只需要在 应用初始化 时候设置这几个参数:hideNavbarOnPageScroll, hideToolbarOnPageScroll, hideTabbarOnPageScroll 和 showBarsOnPageScrollEnd: 如果你只想在某些特定页面打开自动隐藏的功能,你可以通过添加
我试图实现的是在滚动回收视图时隐藏折叠工具栏布局,如果再滚动,则折叠主工具栏。但我只能做到这一点http://i.imgur.com/t6wTW5H.gif. 所以我不能比这更进一步 如果我进一步滚动,我也想隐藏我的工具栏。
问题内容: 我想将工具栏设置为操作栏,但是由于您的工具栏是布局元素,因此必须位于您的布局中。现在我的布局在我的片段中。 我在布局中添加了工具栏,并在片段中对其进行了调用: 之所以有效,是因为我可以设置标题等等,但是现在我希望它作为操作栏做出反应,因为我实际上想拥有它。setDisplayHomeAsUpEnabled(true) 为此,我必须将工具栏更改为操作栏: 这在我的片段中不起作用… 谁能帮
我有一个活动有3个碎片(不是标签)。我有几个动作条项目,我想隐藏他们时,某个片段是存在的。我该怎么做呢?
当我的项目启动时,主框架的下半部分位于任务栏下方。 如何解决这个问题。
我正在构建一个应用程序,带有页面导航,需要在某些页面上显示状态栏,并在其他页面上隐藏它。我想使用淡入/淡出动画,所以我必须设置 并像这样更新状态栏: 当在页面之间导航时,这个过程非常有效,但我无法在启动时摆脱状态栏。 我试过设置: 将其添加到 将此添加到AppDelegates完成启动时使用了以下选项: 将其添加到初始页面的ViewController: 以及在链接的情节提要元素中将“状态栏”设置