2012-03-29 6 views
4

ICSのアンドロイドアクションバーにカスタム背景画像を設定したいと思います。 actionBarに正確に収まるように、プログラムを表示する前にそれをプログラムで再スケーリングします。問題は、actionBarの高さを事前に知っておく必要がありますが、実際に表示される前にactionBar.getHeight()を呼び出す必要があることです。実際に表示する前にアンドロイドのactionBarの高さを検出する方法はありますか?

xmlスタイルのactionBarの背景としてアスペクト比を維持して再スケーリングする方法はありません。 actionBarが表示された後でバックグラウンドを設定しようとすると、画像が上に浮かんでいて奇妙な結果が得られ、半分になります。

これはプログラム的にサイズを変更する唯一の方法と思われます。私が実際にそれを表示する前に、actionBarのサイズを検出する方法はありますか?

ありがとうございます

+0

知りたいかもしれません48dip

だから、他の値である(つまり、背景のサイズを変更し、縦横比を維持しようとしました)。 9パッチ画像の背景を使って解決しました。 –

答えて

3

なぜdraw9patchイメージを使用しませんか?アクションバーの デフォルトサイズは、あなたが、私は同じ質問を持って、あなたと同じように解決しようとした

<!-- Default height of an action bar. --> 
<dimen name="action_bar_default_height">48dip</dimen> 
<!-- Vertical padding around action bar icons. --> 
<dimen name="action_bar_icon_vertical_padding">8dip</dimen> 
<!-- Text size for action bar titles --> 
<dimen name="action_bar_title_text_size">18dp</dimen> 
<!-- Text size for action bar subtitles --> 
<dimen name="action_bar_subtitle_text_size">14dp</dimen> 
<!-- Top margin for action bar subtitles --> 
<dimen name="action_bar_subtitle_top_margin">-3dp</dimen> 
<!-- Bottom margin for action bar subtitles --> 
<dimen name="action_bar_subtitle_bottom_margin">5dip</dimen> 
+0

これらの値は今後変更される可能性が高いと思われます。私はOPがプログラム的に高さを得たいと思う。 –

+0

ActionBarのサイズは、お使いの環境によって異なります。 (例えば、値48dp、値 - 土地40dp、値-sw600dp56dp) – Dalinaum

+0

9パッチ画像は、根底にある問題を解決する(すなわち、背景のサイズを変更し、そのアスペクト比を維持する)。 –

3
int height = 0; 
TypedValue typeValue = new TypedValue(); 
getTheme().resolveAttribute(android.R.attr.actionBarSize, typeValue, true); 
height = TypedValue.complexToDimensionPixelSize(typeValue.data,getResources().getDisplayMetrics()); 

Source

+0

これは動作しますが、背景のサイズを変更し、アスペクト比を維持する根本的な問題には答えません。 –

+0

アクションバーを隠すために指定された高さを減らす方法はありますか? – Steve

+0

'getActionBar()。hide();' –

関連する問題