1

内部TextViewの高さに基づいて位置とサイズを変更するa のカスタム動作をいくつか開発しました a 。これにより、開いたときにタイトルが大きく表示され、完全に展開されたときに中央に表示されますが、完全に折りたたまれたときに通常のタイトルの位置に表示されます。AppBarLayoutCoordinatorLayoutToolbarToolBar

ビデオを見て、Lollipopデバイス (正しく動作していない) とJellyBeanデバイス (正常に動作している) でそれを確認してください。

この問題は (私のテストに基づいて) Lollipop デバイスでのみ発生し、ステータス バーが Lollipop デバイスのオーバーレイであり、JellyBean のオーバーレイではないという事実に関連しているようです。これは私のコードにも反映されています。最終的な位置を計算するにはy、最終的な位置を正しくするために次のことを行う必要があります。

if (mFinalYPosition == 0) {
    mFinalYPosition = (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
        ? (((mContext.getResources().getDimensionPixelOffset(R.dimen.abc_action_bar_default_height_material)/2)) + getStatusBarHeight())
        : ((mContext.getResources().getDimensionPixelOffset(R.dimen.abc_action_bar_default_height_material)/2));
    } 

私にとっての最善の解決策は、Lollipop デバイスでステータス バーを以前の Android バージョンと同じように、つまりオーバーレイとしてではなく、ロックされた位置で処理できるようにすることです。

これを達成するにはどうすればよいですか?

4

1 に答える 1

1

ファイルからすべてのandroid:fitsSystemWindows要素を削除することで、この問題を解決できました。layout xmlさらに、私が投稿したビデオから、私の Lollipop デバイスでのアニメーション中に一部のビューが消え、後で再び表示されたことが明らかな場合があります。elevation特定の を on に設定して、Viewアニメーション中に他の s の後ろに消えないようにすることで、これを修正できました。

于 2015-09-23T16:09:35.807 に答える