1. ホーム
  2. アンドロイド

[解決済み】ActionBarの高さを取得する方法は?

2022-04-14 23:49:25

質問

の高さを取得しようとしています。 ActionBar (Sherlockを使用して) アクティビティが作成されるたびに (ActionBarの高さが変わる可能性のある回転時の構成変更を処理するために特別に)作成されます。

このために、私はメソッド ActionBar.getHeight() のときだけ機能します。 ActionBar が表示されます。

最初のアクティビティが初めて作成されたとき、そのアクティビティから getHeight() の中で onCreateOptionsMenu のコールバックです。しかし、このメソッドの後に呼び出されることはありません。

そこで質問なのですが、いつgetHeight()を呼び出せば0を返さないことが保証されるのでしょうか? または、それが不可能である場合、私はどのようにActionBarの高さを設定することができますか?

どのように解決するのですか?

ActionBarのサイズを明示的に制御したい場合は@birdyさんの回答も選択肢に入りますが、サポートドキュメントで見つけた、サイズをロックせずに引き上げる方法があります。 少し厄介ですが、私の場合はうまくいきました。 この例では、アクティビティで有効です。

// Calculate ActionBar height
TypedValue tv = new TypedValue();
if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true))
{
    int actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data,getResources().getDisplayMetrics());
}

コトリン :

val tv = TypedValue()
if (requireActivity().theme.resolveAttribute(android.R.attr.actionBarSize, tv, true)) {
    val actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data, resources.displayMetrics)
}