我使用 ActionBarSherlock 是因为我想为许多设备创建一个统一的。我想支持低至某些 Android 2 版本的设备。为了测试我有一个
-LG Nexus 4 --运行安卓 4.2.2 -三星 Galaxy Ace --运行安卓 2.3.3
为了开始使用 abs,我从 abs 附带的示例中获取了一些示例代码。我主要使用了 ActionItems.java 示例文件。我只使用了一个删除按钮。我将适当的可绘制对象复制到 res 文件夹(请参阅屏幕截图)。(我创建了 36x36 像素的 ldpi 版本 - 使用 alpha 通道保存)
问题是删除图标不会出现在装有 Android 2.3.3 的 Samsung Ace 上。请参阅屏幕截图 我的代码有什么问题?这是我的代码:
@SuppressLint("NewApi")
public class MainActivity extends SherlockActivity implements Observer {
public static int THEME = R.style.Theme_Sherlock_Light;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fillTableViewWithEvents();
setTheme(R.style.Theme_Sherlock);
setTitle(...);
}
public boolean onCreateOptionsMenu(Menu menu) {
//Used to put dark icons on light action bar
boolean isLight = THEME == R.style.Theme_Sherlock_Light;
MenuItem.SHOW_AS_ACTION_WITH_TEXT);
menu.add("Delete")
.setIcon(isLight ? R.drawable.ic_action_delete : R.drawable.ic_action_delete)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
return true;
}
在 AndroidManifest.xml 我添加了这一行(替换旧的@style 语句
android:theme="@style/Theme.Sherlock"