android动作栏大小高度太大,在移动和模拟器中显示不同

时间:2015-05-27 10:15:33

标签: android android-actionbar

我正在开发Android应用程序,我使用简单的自定义操作栏。在我的工具栏中,我使用setLogo()方法添加了Logo图片,但我的徽标尺寸太大,因此操作栏的高度太高。在我的Android工作室模拟器中它显示完美的小尺寸动作栏但在我的Android手机中我有太大的动作栏。

模拟器在Lolipop(API Level 21)上运行,我的android移动设备在Kitkat上运行。

In my android mobile phone i getting action bar like this 但在Android模拟器中它显示完美 In Emulator it look like this

我的代码:

    toolbar = (Toolbar) findViewById(R.id.app_bar);
    setSupportActionBar(toolbar);


    getSupportActionBar().setTitle("  " + currentChatContact.getName());
    getSupportActionBar().setSubtitle("  last seen at 26/05/2015, 05:15 ");
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setLogo(R.drawable.boy_thumbnail);

我的工具栏代码是:

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/defaultPrimaryColor">  </android.support.v7.widget.Toolbar>

我正在使用AppCompat:

<style name="AppTheme" parent="AppTheme.Base">
    <!-- Customize your theme here. -->
</style>

<style name="AppTheme.Base" parent="Theme.AppCompat.NoActionBar">
    <item name="colorPrimary">@color/defaultPrimaryColor</item>
    <item name="android:textColorPrimary">@color/textPrimaryColor</item>
    <item name="android:textColor">@color/secondaryTextColor</item>
    <item name="colorPrimaryDark">@color/darkPrimaryColor</item>
    <item name="colorAccent">@color/accentColor</item>
    <item name="actionOverflowMenuStyle">@style/CMOptionsMenu</item>
</style>

我还没有为动作栏确定任何高度的图像,但我在移动设备上获得了非常大的图像,如图所示。

请帮我解决这个问题。

2 个答案:

答案 0 :(得分:3)

对于工具栏,请移除高度wrap_content并按此放置

android:layout_height="?attr/actionBarSize"

<强>更新

试试这个

Drawable logo=getResources().getDrawable(R.drawable.boy_thumbnail);
        getSupportActionBar().setLogo(logo);

        for (int i = 0; i < toolbar.getChildCount(); i++) {
            View child = toolbar.getChildAt(i);
            if (child != null)
                if (child.getClass() == ImageView.class) {
                    ImageView iv2 = (ImageView) child;
                    if ( iv2.getDrawable() == logo ) {
                        iv2.setAdjustViewBounds(true);
                    }
                }
        }

答案 1 :(得分:1)

用这个替换你的工具栏代码

<android.support.v7.widget.Toolbar
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/primary"
    android:gravity="center_vertical"
    android:minHeight="?attr/actionBarSize"
    app:theme="@style/ThemeOverlay.AppCompat.Dark" />