0

初めてのツールバー アニメーションは正常に機能し、ツールバーのアニメーションが画面外に正常に表示されます。

問題: どのビューをクリックしてもツールバーのアニメーションが機能せず、アニメーションによってツールバーが画面に再表示されません。

アクティビティの xml コード:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/activity_image_viewer"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<android.support.v4.view.ViewPager
    android:id="@+id/activity_image_viewer_view_pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/black" />

<include
    android:id="@+id/toolbar"
    layout="@layout/toolbar" />

</RelativeLayout>

ツールバーのコードは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorPrimary">

</android.support.v7.widget.Toolbar>

アクティビティ コード: onCreate で、ステータスバー、ナビゲーションバー、ツールバーを非表示にします

RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) toolbar.getLayoutParams();
    layoutParams.setMargins(0, uiUtils.getStatusBarHeight(getResources()), 0, 0);
    toolbar.setLayoutParams(layoutParams);

toolbar.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
                toolbar.animate().translationY(-toolbar.getBottom()).setInterpolator(new AccelerateInterpolator()).start();
            }
            uiUtils.hideStatusNavigationBar(getWindow());

            ViewTreeObserver observer = toolbar.getViewTreeObserver();
            if (observer.isAlive()) {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                    observer.removeOnGlobalLayoutListener(this);
                } else {
                    observer.removeGlobalOnLayoutListener(this);
                }
            }
        }
    });

以下は問題のあるコードです。任意のビューのクリックでツールバーがアニメーションで再表示されません (OnClickListener は既にビューに設定されています)。

@Override
public void onClick(View view) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
        toolbar.animate().translationY(0).setInterpolator(new DecelerateInterpolator()).start();
    }
    uiUtils.showStatusNavigationBar(getWindow());
}
4

1 に答える 1

0

間違って ViewPager に OnClickListener を設定してしまいましたが、ビュー ページャーに対して onClick() メソッドが呼び出されないことに気付きました。そのため、ツールバーの再表示アニメーションが機能していません。

時々、私たちは非常に単純なことを気にしません。

解決策: ViewPager から OnClickListener を削除し、他のクリック可能なビューに設定します。

于 2016-11-12T07:37:13.960 に答える