0

私は正しいと思ったこのレイアウトコードを持っています:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="64dip"
    android:background="@drawable/title_background">

    <ImageView
        android:layout_width="48dip"
        android:layout_height="48dip"
        android:layout_margin="8dip"
        android:src="@drawable/title_icon" />

    <ImageView
        android:layout_width="128dip"
        android:layout_height="32dip"
        android:layout_margin="16dip"
        android:src="@drawable/title_text" />

</LinearLayout>

LinearLayout の高さは 64dip で、最初の ImageView の高さは 48dip です。私がずっと前に学んだ数学から、8dip のマージンは完全に一致するでしょう。しかし、私のImageViewsが一番下で切り取られているので、そうではありません。これはカスタム タイトルバー用で、テーマの 64dip に一致するように android:windowTitleSize を設定しました。

タイトルバーにある種の隠しパディングがありますか? もしそうなら、それはどのくらいのサイズですか?

4

2 に答える 2

2

昔ながらの方法でテストした後、「不明な」パディングが8dipであることがわかりました。これが固定値であるかどうかはわかりません。私の48dip ImageViewと完全に一致するので、0dipのマージンで中央に配置されます。2 番目の ImageView には、上下中央に配置するために 8dip のマージンが必要です。

カスタムのタイトルバーのドキュメントは非常にまれであるため、これは私が知る限りです。

編集:

タイトルバー用に作成した背景画像は、コンテンツ領域を持つ 9 パッチ画像です。これは「不明な」パディングです。要約すると、カスタム タイトルバーには非表示のパディングはありませんが、コンテンツ エリアで 9 パッチの背景画像を使用する場合、パディングはそのコンテンツ エリアの外側になります。基本的には、背景として 9 パッチの画像を使用する必要があります...

于 2010-12-28T11:29:55.860 に答える
0

これを試して:

<ImageView
        android:layout_width="48dip"
        android:layout_height="48dip"
        android:layout_margin="8dip"
        android:src="@drawable/title_icon"
        android:scaleType="center" 
        android:adjustViewBounds="true"/>

/>

于 2010-12-28T11:01:42.133 に答える