我正在使用Google support-v7在Android 2.3+上获得ActionBar支持,这是我的代码
public abstract class NavUpActionBarActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActionBar actionBar = getSupportActionBar();
actionBar.setHomeAsUpIndicator(R.drawable.title_back);
actionBar.setDisplayOptions(
ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_HOME_AS_UP);
actionBar.setTitle(getCustomTitleResId());
}
@Override
public boolean onSupportNavigateUp () {
this.finish();
return true;
}
protected abstract int getCustomTitleResId();
}
NavupActionBarActivity的所有子类都没有在2.3.3上显示任何标题,任何想法?
UPDATED1
以上代码适用于每台设备4.x
UPDATED2
这是谷歌的已知issue
答案 0 :(得分:0)
而不是
actionBar.setTitle(getCustomTitleResId());
你应该这样做:
ActionBar ab = getSupportActionBar();
ab.setTitle("My Title");
ab.setSubtitle("sub-title");
如果你想从你的资源中获取标题的字符串,那么你应该有这样的东西
{
/* ... */
ActionBar ab = getSupportActionBar();
ab.setTitle(getCustomTitleResId());
ab.setSubtitle("sub-title");
/* ... */
}
protected String getCustomTitleResId() {
return getString(R.string.CustomTitle);
}
请记住,如果您希望此方法有效,则应将其定义到Activity中,或将活动上下文传递给它:
protected String getCustomTitleResId(Context c) {
return c.getString(R.string.CustomTitle);
}
答案 1 :(得分:0)
试试这个..
actionBar.setDisplayShowTitleEnabled(true);
此外,如果您需要创建自定义操作栏,请在此处关注我的帖子。Android Action Bar: Can I replace a custom Title in appcompat v7
<强>更新强>
设置标题试试这个...
actionBar.setTitle(Html.fromHtml("<font color='#013145'>Sign in or Create an account</font>"));
希望有所帮助......
<强>更新强>
我已经遇到过这个问题..这就是我建议你为Action栏创建自定义视图的原因。在您尝试时,无法保证UI的外观和感觉..
如果您还需要这样做,请关注: 现在,当你正在尝试..你需要获得较低版本的标题栏的ID,然后你需要更新该标题.. 对于Ex:你首先需要检查更低版本和更高版本..在更高版本中你只需要像我上面提到的那样定义..对于较低版本你需要获得标题Texview的ID然后你需要设置标题在它上面。
你可以获得这样的标题ID ..
抓取action_bar_title的ID
int titleId = getResources().getIdentifier("action_bar_title", "id", "android");
现在您可以将ID与TextView一起使用
TextView abTitle = (TextView) findViewById(titleId);
abTitle.setText("You title text");
但总而言之,我发现使用自定义视图是完成此任务的更好方法..因为这将允许您以非常简单和方便的方式制作更复杂的UI。
希望你能选择这个选项。
对于较低版本和较高版本的检查..您可以尝试这样..
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
// Higher version
} else {
// Lower version
}
希望听起来很棒..干杯!