Android ActionBar徽标和标题

时间:2015-06-18 05:00:05

标签: android android-actionbar

我正在设置我的操作栏。我想要一个特定的文字颜色,一个特定的背景颜色,我希望它在左边有一个标志。我设法使用styles.xml中的代码修改文本和背景:

<resources>
    <style name="MyTheme" parent="Theme.AppCompat.Light">
        <item name="actionBarStyle">@style/MyTheme.actionBar</item>
        <item name="android:textColorPrimary">#ffffff</item>
    </style>
    <style name="MyTheme.actionBar" parent="Widget.AppCompat.ActionBar">
        <item name="background">@color/actionbar_background</item>
    </style>
</resources>

但是当我在MyTheme.actionBar中添加此代码时,会出现徽标,但文本会消失。

<item name="logo">@mipmap/giftbox</item>
<item name="displayOptions">useLogo|showHome</item>

我该如何解决这个问题?

编辑:这是活动代码:

public class Person extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_person);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_person, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}
}

3 个答案:

答案 0 :(得分:0)

试试此代码

Spannable text = new SpannableString(actionBar.getTitle());
text.setSpan(new ForegroundColorSpan(Color.BLUE), 0, text.length(),  Spannable.SPAN_INCLUSIVE_INCLUSIVE);
actionBar.setTitle(text);

答案 1 :(得分:0)

int titleId = getResources().getIdentifier("action_bar_title", "id",
                "android");
TextView title = (TextView) findViewById(titleId);

通过此,您可以获得ActionBar标题TextView,您可以为其设置自己的文字,颜色,风格

答案 2 :(得分:0)

您可以使用徽标和textview创建自定义标题视图,并在活动中对其进行充气。使用这种方法,您还可以将任何颜色设置为背景。

在下面的代码中完成:

getSupportActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.top_bar_light)));
            LayoutInflater mInflater = LayoutInflater.from(this);

            View mCustomView = mInflater.inflate(R.layout.headerbar_view, null);


            imgvwRefrsh = (ImageView) mCustomView.findViewById(R.id.ximgvwrefresh);

            imgvwStreamoid = (ImageView) mCustomView.findViewById(R.id.ximgvwStreamoid);
            getSupportActionBar().setCustomView(mCustomView);
            getSupportActionBar().setDisplayShowCustomEnabled(true);