使中心对齐导航栏中的按钮图像

时间:2012-01-08 07:24:23

标签: android xml android-layout

我有以下用于导航栏布局的xml文件:

navigation_bar.xml

编辑:我通过删除表格布局简化了此布局。但是直到....

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    style="@style/NavigationBar" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="45dp"
        android:layout_marginLeft="10dp"
        android:src="@drawable/htc" />

    <TextView
        android:id="@+id/dummy"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="" />

    <Button
        android:id="@+id/btn_home"
        style="@style/NavigationButton"
        android:layout_marginRight="10dp"
        android:drawableTop="@drawable/btn_home"
        android:text="" />

</LinearLayout>

以下是我的 styles.xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="NavigationBar">
        <item name="android:layout_width">fill_parent</item>
        <item name="android:layout_height">45dp</item>
        <item name="android:orientation">horizontal</item>
        <item name="android:background">@drawable/top</item>
        <item name="android:dither">true</item>
    </style>


    <style name="NavigationButton">
        <item name="android:layout_gravity">center_vertical</item>
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">match_parent</item>
        <item name="android:gravity">center_horizontal</item>
        <item name="android:drawablePadding">2dp</item>
        <item name="android:background">@null</item>
    </style>   

</resources>

此外,以下是可绘制按钮: btn_home.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/home_pressed"
        android:state_focused="true"
        android:state_pressed="true" />
    <item android:drawable="@drawable/home_pressed"
        android:state_focused="false"
        android:state_pressed="true" />
    <item android:drawable="@drawable/home_selected" android:state_focused="true" />
    <item android:drawable="@drawable/home_default"
        android:state_focused="false"
        android:state_pressed="false" />
</selector>

我得到以下结果:

Screenshot of result

请参阅,主页按钮显示在顶部。但我希望它垂直居中。为此,我在<item name="android:layout_gravity">center_vertical</item>文件上指定了styles.xml。我也在android:layout_gravity="center_vertical|left"上尝试了navigation_bar.xml。但没有结果。我怎样才能将主页画面传到中心?任何帮助表示赞赏!

3 个答案:

答案 0 :(得分:1)

您想要一个仅带图像的按钮,因此我建议您使用图像按钮而不是按钮。

此代码中的解决方案是

不要使用android:drawableTop =“@ drawable / btn_home”

改为使用

机器人:背景= “@绘制/ btn_home”

它会在垂直中心显示图像

答案 1 :(得分:0)

最后我找到了一个解决方案,虽然我觉得这不是最好的。这是我发现的解决方案。

使用值wrap_contentfill_parentmatch_parent在这里都没用。他们总是将图像置于我为android:layout_gravityandroid:gravity设置的任何值的顶部。最后,指定图像的大小作为高度已经成功。

这是来自NavigationButton

styles.xml的新样式
<style name="NavigationButton">
    <item name="android:layout_gravity">center_vertical</item>
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">25dp</item>
    <item name="android:background">@null</item>
</style>   

请参阅layout_height?现在是25dp。此外,以下是Button的{​​{1}}条目。

navigation_bar.xml

结果是

Result of specifying exact height

答案 2 :(得分:-1)

你会试试这个

 <Button
  android:id="@+id/btn_home"
  style="@style/NavigationButton"
  android:layout_centervertical="true"
  android:layout_marginRight="10dp"
  android:drawableTop="@drawable/btn_home"
  android:text="" />