- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在我的 RecyclerView 上滚动时隐藏 ActionBar。为此,我使用了快速返回模式。
这是我的 styles.xml
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="android:windowActionBarOverlay">true</item>
<!-- Support library compatibility -->
<item name="windowActionBarOverlay">true</item>
</style>
这是我的布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="?attr/actionBarSize">
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swipe_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include layout="@layout/recyclerview"/>
</android.support.v4.widget.SwipeRefreshLayout>
<include layout="@layout/empty_layout"/>
<fragment
android:id="@+id/adFragment"
android:name="com.myapp.fragment.AdFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true" />
</RelativeLayout>
这是我显示/隐藏操作栏的代码
@Override
public void onUpOrCancelMotionEvent(ScrollState scrollState) {
ActionBar ab = ((ActionBarActivity)getActivity()).getSupportActionBar();
boolean tabletSize = getResources().getBoolean(R.bool.isTablet);
if (!tabletSize) {
if (scrollState == ScrollState.UP) {
if (ab.isShowing()) {
ab.hide();
}
} else if (scrollState == ScrollState.DOWN) {
if (!ab.isShowing()) {
ab.show();
}
}
}
}
我正在使用 ?attr/actionBarSize
来避免闪烁。但是当 ActionBar 隐藏时,我仍然拥有 paddingTop。
如何在隐藏 ActionBar 时删除右侧屏幕上的 paddingTop?
最佳答案
只需在您的 ListView
中使用此监听器:
AbsListView.OnScrollListener onScrollListener = new AbsListView.OnScrollListener() {
int mLastFirstVisibleItem = 0;
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView absListView, int firstVisibleItem, int visibleItemCount,
int totalItemCount) {
final int lastItem = firstVisibleItem + visibleItemCount;
if (absListView.getId() == wallListView.getId()) {
final int currentFirstVisibleItem = wallListView.getFirstVisiblePosition();
if (currentFirstVisibleItem > mLastFirstVisibleItem) {
actionBar.hide();
} else if (currentFirstVisibleItem < mLastFirstVisibleItem) {
actionBar.show();
}
mLastFirstVisibleItem = currentFirstVisibleItem;
}
}
};
如果你想要顶部的黑色区域,你必须:
将此代码添加到您的Activity
requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY); //ADD THIS BEFORE setContentView(...);
setContentView(R.layout.your_layout);
现在就好了,但是你还需要设置空间大小等于ActionBar
的大小。我们将 Header
添加到您的 ListView
:
View padding = new View(getApplicationContext());
padding.setBackgroundColor(Color.TRANSPARENT);
padding.setHeight(action_bar_size);
your_list_view.addHeaderView(padding);
或者您可以在 XML
中将 padding 设置为 ListView
,但这很糟糕,因为当 ActionBar
隐藏。
如果你想给 SwipeRefreshLayout 添加偏移,尝试使用:
public void setProgressViewOffset (boolean scale, int start, int end)
The refresh indicator starting and resting position is always positioned near the top of the refreshing content. This position is a consistent location, but can be adjusted in either direction based on whether or not there is a toolbar or actionbar present.
Parameters scale Set to true if there is no view at a higher z-order than where the progress spinner is set to appear. start The offset in pixels from the top of this view at which the progress spinner should appear. end The offset in pixels from the top of this view at which the progress spinner should come to rest after a successful swipe gesture.
这一定对你有帮助。
关于android - 滚动时隐藏 Android ActionBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28319859/
我在我的应用程序中设置了一个操作栏。我通过调用 Activity.getActionBar() 取回 ActionBar .然后我设置了我需要的所有选项卡感谢 ActionBar.addTab()和
我正在为 Android 平板电脑 (XOOM) 开发应用程序,我想知道是否可以将操作栏放在屏幕底部,而不是顶部(这是默认选项) . 谢谢。 最佳答案 如果您在 Activity 中获取 Action
我很想为我用“ActionBar Sherlock”库导入的 ActionBar 设置一个背景图像。但是,我在 Internet 上找不到任何有关如何使用 XML 独特地设置 BackgroundIm
我需要在栏下方显示子菜单,而不是在栏本身的顶部。 复制下面我的 actionbar xml 在activity中(
我已经阅读了 AppCompat 库中的工具栏及其所有功能。我在 android 开发者博客 (here) 中注意到的一些事情是: Toolbar is fully supported in AppC
我试图做一个 Espresso 测试来检查 actionbar 是否隐藏/显示,但我似乎无法弄清楚如何将它与 Espresso.onView(...) 匹配。 Afaik它没有ID,对吧? 非常感谢
我们怎样才能让操作栏和操作栏选项卡变成纯白色。我正在使用 android-support-v7-appcompat 库来支持向后兼容性。 style/Theme.AppCompat.Light.Dar
在 Galaxy S3 上,我遇到一个问题,即 ActionBar 中的一个按钮被配置为 showAsAction="always"并且同时显示在硬件溢出菜单和操作按钮上。我希望它不显示在硬件溢出菜单
我正在学习教程 https://www.youtube.com/watch?v=VVahIc8yENk我得到了错误 java.lang.NullPointerException: Attempt to
背景 我希望在 PreferenceActivity 上显示一个 ActionBar,因为它不适用于 Honeycomb 之前的设备(即使在支持库中)。 因为这样的类在支持库中不可用,所以我不能只调用
我想实现将下载数据并将其设置到 ActionBar 选项卡中的应用程序。我已经实现了它,但我还有一件事要做。我试过添加操作栏列表,像这样 one , 但 android 不允许同时使用 Tabs 和
我希望我的 ActionBar 和 Tabs 看起来像这样。 请忽略颜色 目前看起来是这样 由于我的主题,我必须在 java 中设置自定义 ActionBar。 actionBar.setDispla
我目前正在某些页面上设置 ActionBar 副标题,但在某些页面上我不想有副标题。 我可以简单地将字幕文本设置为空,但这只会删除文本。它仍然占据字幕空间,从而将标题推高。可能很难解释,所以我用图片说
import android.app.ActionBar; import android.app.FragmentTransaction; import android.content.Intent;
我正在使用 ActionBarSherlock ,并尝试隐藏/显示全屏图像的 ActionBar,使用: getSupportActionBar.hide(); 和 getSupportActionB
我在我的简单应用程序上使用 ActionBarSherlock,如果用户在主页/主要 Activity 中,我想隐藏主页按钮。我了解如何使用 setHomeButtonEnabled(false) 执
我发现自己在 3 个单独的 Activity 中为我的 actionBar (actionBarSherlock) 列表重写了相同的代码。所有 3 个都使用相同的 actionBar,它有 3 个项目
我正在使用 ActionBarSherlock 在关于 ActionBar 标签高度的类似问题中,我使用了: @style/blah1 @style/blah2 80dp .
我一直在寻找是否有任何关于如何始终在 ActionBar 下方显示 ActionBar 选项卡的信息,即使当手机横向时也是如此。我知道它会根据屏幕上是否有足够的空间来自动将选项卡放置在 ActionB
我在 ActionBar 上方显示的 ActionBar Tabs 出现了这种奇怪的行为。当我为 ActionBar 设置自定义 View 时,这恰好发生了。我正在使用 Roman Nurik 的示例
我是一名优秀的程序员,十分优秀!