在ActionBar中设置自定义图标和文本

时间:2015-02-20 12:03:04

标签: android

我正在尝试在我的ActionBar中设置自定义图标和文字,就像WhatsApp那样(个人资料图片和用户名)。

    ActionBar ab = getSupportActionBar();
    BitmapDrawable actionBarBackground = new BitmapDrawable(getResources(), chatPartner.getAvatar(this));
    ab.setDisplayUseLogoEnabled(true);
    ab.setLogo(actionBarBackground);
    ab.setTitle(chatPartner.getUsername());

但不显示徽标,只显示标题。enter image description here

4 个答案:

答案 0 :(得分:0)

你正在混合概念。您正在使用没有图标的新Toolbar。 Whatsapp使用的是旧的ActionBar,它有一个图标。这就是为什么你没有看到图标,因为新的工具栏没有。您可能正在使用AppCompat库并使用AppCompat库,它负责为您提供工具栏,即使在代码中您使用ActionBar引用它。

编辑:好的,如果你有充分的理由使用带有图标的旧ActionBar,你可以使用支持库的第19版

compile 'com.android.support:appcompat-v7:19.1.0'

并定位sdk 19

targetSdkVersion 19

您的代码应该开箱即用。

答案 1 :(得分:0)

您可以尝试使用自定义操作栏:

getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowCustomEnabled(true);
getSupportActionBar().setDisplayUseLogoEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(false);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.slide_menu); //you can set here image
getSupportActionBar().setIcon(null);
getSupportActionBar().setBackgroundDrawable(
        getResources().getDrawable(R.drawable.signinheader));
LayoutInflater inflator = (LayoutInflater) activity
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflator.inflate(R.layout.actionbar_layout, null);// custom layout
actionBartitle = (TextView) v.findViewById(R.id.tvTitle);
actionBartitle.setText(getResources()
        .getString(R.string.my_london_trip));

getSupportActionBar().setCustomView(v);

注意:您可以使用actionbarTitle.settext("TEXT")

设置所需的标题

actionbar_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="fill_horizontal"
    android:background="@drawable/signinheader" >

    <TextView
        android:id="@+id/tvTitle"
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:paddingBottom="10dp"
        android:paddingLeft="10dp"
        android:paddingTop="10dp"
        android:text="@string/title_activity_forgot_password"
        android:textColor="@color/white"
        android:textSize="20sp"
        android:visibility="visible" />

    <TextView
        android:id="@+id/tvCartCount"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_marginRight="5dp"
        android:layout_marginTop="5dp"
        android:background="@drawable/cart1"
        android:gravity="center_horizontal"
        android:paddingLeft="4dp"
        android:paddingTop="4.5dp"
        android:text="1"
        android:textColor="@color/audio_guide_palyer_back"
        android:textSize="10sp"
        android:visibility="visible" />

</RelativeLayout>

答案 2 :(得分:0)

试试这个:

getSupportedActionBar()的setIcon(R.drawable.my_icon);

答案 3 :(得分:0)

我建议您使用已经使用的ActionBar ToolBar。因为ToolBars易于定制和操作。这是一个link到一个小教程,可以帮助您设置文本和图像