内部TextView
の高さに基づいて位置とサイズを変更するa のカスタム動作をいくつか開発しました a 。これにより、開いたときにタイトルが大きく表示され、完全に展開されたときに中央に表示されますが、完全に折りたたまれたときに通常のタイトルの位置に表示されます。AppBarLayout
CoordinatorLayout
Toolbar
ToolBar
ビデオを見て、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 バージョンと同じように、つまりオーバーレイとしてではなく、ロックされた位置で処理できるようにすることです。
これを達成するにはどうすればよいですか?