我正在尝试使用AppCompat以编程方式更改操作栏的背景颜色和文本颜色。这是我之前使用Holo主题时使用的代码,但似乎我不能对AppCompat使用相同的东西。有人知道我需要改变什么吗?
ActionBar bar = getActionBar();
bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#95CDBA")));
getActionBar().setTitle(Html.fromHtml("<font color='#000099'>Hello World</font>"));
答案 0 :(得分:12)
而不是getActionBar()
使用getSupportActionBar()
修改强>
您收到错误,因为您的导入错误。请使用以下相同的内容。这很好用。
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.text.Html;
public class TestActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActionBar actionBar = getSupportActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#95CDBA")));
actionBar.setTitle(Html.fromHtml("<font color='#000099'>Hello World</font>"));
}
}
是的,这是Google的错误,应该有不同的名称。 SupportActionBar会很棒。
如果您无法修复导入,则可以明确指定哪一个
android.support.v7.app.ActionBar actionBar = getSupportActionBar();
答案 1 :(得分:0)
老问题,但我决定添加另一种方法。
如果使用自定义ActionBar,则可以执行以下操作来更改字体,文本颜色,文本本身和背景颜色:
public class MainActivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.mCustom_app_bar);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle("Custom Title");
applyToolbarTitleFontTextBackgroundAndTextColor(this);
}
public static void applyToolbarTitleFontTextBackgroundAndTextColor(Activity context){
Toolbar toolbar = context.findViewById(R.id.mCustom_app_bar);
toolbar.setBackground(new ColorDrawable(Color.parseColor("#95CDBA")));
for(int i = 0; i < toolbar.getChildCount(); i++){
View view = toolbar.getChildAt(i);
if(view instanceof TextView){
TextView tv = (TextView) view;
tv.setTextColor(Color.parseColor("#ffffff"));
Typeface titleFont = Typeface.createFromAsset(context.getAssets(), "fonts/mCoolFont.otf");
if(tv.getText().equals(toolbar.getTitle())){
tv.setTypeface(titleFont);
break;
}
}
}
}
}
通过这种方式,您可以完全控制ActionBar的外观。
希望它可以帮助某人。