ユーザーがリストビューを上下にスクロールするときに互換性アクションバーを非表示/表示したい。アクションバーが消えると、リストはアクションバーのスペースも占めます。
私はアプローチに従いましたが、醜いちらつきを生成します。誰かがこの問題の適切な解決策を持っていますか?望ましい動作は、Google +アプリの非表示/表示メカニズムのようなものです(フッターには興味がありません)。
私が試したことは以下のとおりです:
boolean tabletSize = getResources().getBoolean(R.bool.isTablet);
if (!tabletSize) {
final ActionBar actionBar = ((ActionBarActivity) getActivity()).getSupportActionBar();
lvNews.setOnScrollListener(new AbsListView.OnScrollListener() {
private int mLastFirstVisibleItem;
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if (mLastFirstVisibleItem < firstVisibleItem) {
if (actionBar.isShowing()) {
actionBar.hide();
}
}
if (mLastFirstVisibleItem > firstVisibleItem) {
if (!actionBar.isShowing()) {
actionBar.show();
}
}
mLastFirstVisibleItem = firstVisibleItem;
}
});
}
レイアウトの再調整によって引き起こされるちらつきを回避するには、アクションバーのoverlayプロパティを使用できます。
https://developer.Android.com/training/basics/actionbar/overlaying.html
ただし、このソリューションではアクションバーがリストビューをオーバーレイするため、このサイズのヘッダーを追加する必要があります。
"?android:attr/actionBarSize"
例えば :
mVideosListView = (ListView) getActivity().findViewById(Android.R.id.list);
mVideosListView.addHeaderView(getActivity().getLayoutInflater().inflate(R.layout.listview_header,null));
この影響を受けるナビゲーションドロワーなどの他の要素にも注意してください。
アクションバーをリストビューにオーバーレイさせる必要があります。これにより、必要に応じてアクションバーを非表示および表示する責任があります。
次のページに例があります: http://www.techrepublic.com/article/pro-tip-maximize-Android-screen-real-estate-by-showing-and-hiding-the-action -bar /
このライブラリを試すことができます。それが役に立てば幸い https://github.com/ksoichiro/Android-ObservableScrollView
そのリンクで私の答えを参照してください: Android Google InboxアプリのようなActionBarを非表示および表示する方法 RecyclerViewを使用していますが、考え方は同じです