2014-07-06 86 views
0

我想为我的ActionBar添加TextView。下面是我用来创建动作条的片段:TextView在ActionBar中不显示

MainActivity

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    getSupportActionBar().setTitle(""); 
    getSupportActionBar().setHomeButtonEnabled(true); 

    // (...) 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getSupportMenuInflater(); 
    inflater.inflate(R.menu.main_tablet, menu); 
    mTimeTrackingMenu = menu.findItem(R.id.action_time_tracking); 
    return true; 
} 

menu.xml文件

<item 
    android:id="@+id/action_tt" 
    android:icon="@drawable/icon_2" 
    android:showAsAction="always" 
    android:title="@string/ab_menu_tt"/> 
<item 
    android:id="@+id/action_tt" 
    android:actionViewClass="android.widget.TextView" 
    android:icon="@drawable/icon_1" 
    android:showAsAction="always|withText" 
    android:title="TEST"/> 
<item 
    android:id="@+id/action_refresh" 
    android:icon="@drawable/icon_1_5_2_wh" 
    android:showAsAction="always" 
    android:title="@string/ab_menu_refresh"/> 

我试图改变XML的各种参数,但TextView不会出现。

我也尝试动态地添加它 - 那么它的工作,但TextView正在从XML(我需要它的第一个项目前加上从menu.xml)所产生的所有项目后添加。

+0

http://stackoverflow.com/questions/9282122/android-4-0-text-on-the-action-bar-never-shows –

回答

0

onCreateOptionsMenu,您可以通过调用findItem()或致电menuItem.getActionView()然后将它转换为你正在寻找类得到ActionView得到MenuItem

但是,实际上,TextView不是MenuItem的子类,并且没有实现接口CollapsibleActionView,它为Android中的ActionView提供了基础。如果您想了解更多有关的ActionView,检出教程:http://www.grokkingandroid.com/adding-actionviews-to-your-actionbar/和Android的参考:http://developer.android.com/guide/topics/ui/actionbar.html#ActionView

但是,如果你想要一个TextView添加到您的动作条在一定的位置,你可以这样做:

getActionBar().setDisplayShowCustomEnabled(true); 
getActionBar().setCustomView(yourCustomizedViewHere); 

这是通过自定义ActionBar的视图并将其设置为您想要的方式来实现您的目标的替代方法。但是这样做的缺点是你必须创建视图来使它们像MenuItem一样工作,这是相当多的工作。

或者,如果你只是想告诉你想要的文字,你可以这样做:

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
      android:id="@+id/action_tt" 
      android:orderInCategory="100" 
      android:showAsAction="always" 
      android:title="Your text goes here."/> 
</menu> 

但上面的代码的外观和手感相当难看。

+0

我实际上在我的应用程序中有一个自定义视图,但它不是'如果我没有记错的话,可以很好地处理一些其他UI组件(一些'ViewPager'),我不得不切换回“正常”的ActionBar。 – syntagma

+0

@ REACHUS好吧,然后在我的回答中尝试第三种方式。顺便说一句,一直在开发Android近一年,我不得不说开发它真的是一个p,至少有时候是这样。 :-( –

+0

@ REACHUS另外,请看看这里的一个类似的问题:http://stackoverflow.com/questions/13722251/how-to-create-a-textview-in-the-res-menu –