0

ListView の項目をスクロールするときにタイトル バーを非表示にし、スクロール後にタイトル バーを表示したい。この問題を解決するためのアイデアを提案してください。

4

3 に答える 3

0
    //declare this two globally
    public static int ch = 0, cht = 1;
    int myLastVisiblePos;

    //Then add onScrollListener to your ListView

    list.setOnScrollListener(new OnScrollListener() {
        @Override
        public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
            int currentFirstVisPos = view.getFirstVisiblePosition();
            if (currentFirstVisPos > myLastVisiblePos) {
                if (ch == 1) {
                    ch++;
                    cht = 1;
                    getActionBar().hide();
                } else if (ch == 0) {
                    getActionBar().show();
                    ch++;
                }
            }
            if (currentFirstVisPos < myLastVisiblePos)
                if (cht == 1)
                    getActionBar().show();
            myLastVisiblePos = currentFirstVisPos;
        }

        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {
            // TODO Auto-generated method stub
        }
    });
于 2014-10-20T11:10:06.550 に答える
0

まず、次のように Xml ビューを ActionBar に追加します。

LayoutInflater inflater = (LayoutInflater) getActionBar()
            .getThemedContext().getSystemService(LAYOUT_INFLATER_SERVICE);

    View customActionBarView = inflater.inflate(R.layout.main, null);
final ActionBar actionBar = getActionBar();
    actionBar.setDisplayOptions(
            ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_SHOW_HOME);    

    actionBar.setCustomView(customActionBarView,
                    new ActionBar.LayoutParams(
                            ViewGroup.LayoutParams.MATCH_PARENT,
                            ViewGroup.LayoutParams.MATCH_PARENT));
            setContentView(R.layout.main);

次に、 onScrollStateChanged() メソッドで変更を行います。

    @Override
    public void onScrollStateChanged(AbsListView view, int scrollState) {

    switch (scrollState) {
    case SCROLL_STATE_IDLE:
            actionBar.show();
            break;
    case SCROLL_STATE_TOUCH_SCROLL:
            actionBar.hide();
            break;
        }
    }
于 2014-10-20T11:48:35.600 に答える