Bri*_*o84 59 android android-4.0-ice-cream-sandwich android-actionbar
我正在尝试使用谷歌的新api,特别是动作栏.
当构建设置为api 10时,如果我按下菜单按钮,我会看到漂亮的菜单选项,每个选项都带有图片和图标.当使用api 14时,无论我尝试什么,它总是将图标放在操作栏中,没有文字.我已经尝试了我能想到的一切.我给了它"with text"属性,将文本更改为单个字符(如果是房间问题),但没有.
我之前已经看过这个,甚至在android.developer的开发者指南中,但我似乎无法找到答案如何让它出现.
dgm*_*ltn 83
我怀疑Android开发人员有意识地决定永远不会在狭窄的操作栏上显示单个菜单项的文本和图标.但是如果你真的想这样做,你可以在menu.xml文件中使用 android:actionLayout.在Android的动作条的文件有一个稍微好一点的解释.
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_foo"
android:title="@string/menu_foo"
android:icon="@drawable/ic_menu_foo"
android:showAsAction="always"
android:actionLayout="@layout/action_button_foo" />
</menu>
Run Code Online (Sandbox Code Playgroud)
然后创建你的action_button_foo.xml布局:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="14dp"
android:paddingBottom="14dp"
android:gravity="center"
android:text="@string/menu_foo"
android:drawableLeft="@drawable/ic_menu_foo"
android:background="@drawable/bg_btn_action_bar"
android:clickable="true" />
Run Code Online (Sandbox Code Playgroud)
并使用选择器作为其背景bg_btn_action_bar.xml,因此当您点击它时它会改变颜色:
<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:drawable="@drawable/bg_action_bar_pressed" />
<item
android:drawable="@color/transparent" />
</selector>
Run Code Online (Sandbox Code Playgroud)
现在,您需要使自定义视图处理单击事件.在您的活动中,我喜欢这样做,以便我可以处理点击onOptionsItemSelected以及所有其他非自定义项目.
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.my_menu, menu);
final MenuItem item = menu.findItem(R.id.menu_foo);
item.getActionView().setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
onOptionsItemSelected(item);
}
});
return super.onCreateOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)
Ste*_*dle 10
这与我在运行4.0.4的Nexus S上观察到的情况完全相同.我的应用程序使用一个操作栏,其中包含多个作为片段实现的选项卡 我的各种片段会调整操作栏上显示的菜单选项,同时显示其选项卡.
这似乎是ICS中的一个错误,因为它在我的Nexus S和仿真器(HVGA和WVGA800)中执行如下:
我注意到制表旋转器的其他一些故障让我相信ICS的这个小角落有点凌乱/错误.如果我告诉应用程序在窄显示屏上拆分操作栏(通过添加android:uiOptions="splitActionBarWhenNarrow"清单,ICS总是将这些项目推到底栏,即使顶部仍有足够的空间.即使有额外的栏,它仍然不显示文本,只显示图标.
在运行4.0.4的Xoom上,标签和操作项总是以您希望它们出现的方式显示,因为有足够的空间.
解决方法:如果您真的想要在纵向模式下操作栏上的文本,则需要放弃图标.从菜单项中删除图标,将出现文本.这不完全是我们所追求的.
我在此处发布了错误报告:https://code.google.com/p/android/issues/detail?id = 30180.
如果您希望选项菜单显示在 Honeycomb 的操作栏中,我这样做了:
在您的活动中,重写此函数:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.actionbar_universe, menu);
return true;
}
Run Code Online (Sandbox Code Playgroud)
其中 R.menu.actionbar_universe 定义菜单项,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/crossholdings" android:showAsAction="always|withText"
android:title="Cross Holdings" android:icon="@drawable/actionbar_cross"/>
</menu>
Run Code Online (Sandbox Code Playgroud)
请注意 showAsAction="always|withText" 并指定 android:title。
如果您有该资源但无法正常工作,请在此处复制|粘贴您的菜单资源。
编辑:这回答了错误的问题,但它是原文。
我使用这段代码来设置操作栏的标题,并用我公司的徽标将其涂成红色。在3.0中运行良好。
public ActionBar setActionBarStyle(String title) {
ActionBar actionBar = setActionBarStyle();
actionBar.setTitle(title);
return actionBar;
}
public ActionBar setActionBarStyle() {
ActionBar actionBar = getActionBar();
ShapeDrawable actionBackground = new ShapeDrawable();
actionBackground.getPaint().setColor(Color.RED);
actionBackground.setBounds(0, 0, 5, 5);
actionBar.setBackgroundDrawable(actionBackground);
actionBar.setDisplayUseLogoEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
return actionBar;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37877 次 |
| 最近记录: |