我试图在操作栏中显示两个图标,其中一个是带有几个孩子的菜单。但是,我无法做到。我在SO中测试了其他类似问题的一些答案,但无济于事。甚至没有一个图标出现。这是代码。谢谢你的帮助。
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context="com.semantic.semanticOrganizer.sem.activities.HomeActivity" >
<item android:id="@+id/viewTags"
android:icon="@drawable/ic_action_labels"
app:showAsAction="always"
android:title="Tags"
/>
<item
android:id="@+id/a_More"
android:icon="@drawable/ic_more_vert_white_36dp"
app:showAsAction="always"
android:title="More">
<menu>
<item android:id="@+id/action_view_notes"
android:title="Notes"
android:orderInCategory="100"
app:showAsAction="never" />
<item android:id="@+id/action_view_habits"
android:title="Habits"
android:orderInCategory="100"
app:showAsAction="never" />
<item android:id="@+id/action_view_checklists"
android:title="Checklists"
android:orderInCategory="100"
app:showAsAction="never" />
<item android:id="@+id/action_view_tags"
android:title="Tags"
android:orderInCategory="100"
app:showAsAction="never" />
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="100"
app:showAsAction="never" />
</menu>
</item>
</menu>
Java代码
public class HomeActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
stuffWhichDoesNotInvolveGettingActionBar();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu items for use in the action bar
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.home, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
if (id == R.id.action_view_tags) {
return true;
}
if (id == R.id.action_view_notes) {
return true;
}
if (id == R.id.action_view_checklists) {
return true;
}
if (id == R.id.action_view_habits) {
return true;
}
return super.onOptionsItemSelected(item);
}
private void stuffWhichDoesNotInvolveGettingActionBar(){
//Code
}
编辑:正如Neutrino建议的那样,我尝试转向appCompat主题。但是这个error出现在Win64机器上。资源未找到属性“actionModeShareDrawable”的错误。我将compileSdkVersion更改为21并且它可以正常工作。所以,我现在可能不用AppCompat就可以了。我目前正在使用Holo。所以请建议修复Holo主题。
修改 我找到了一个解决我提到的错误的方法,使用支持库的v20而不是v21,因为我发现Gradle 2.3构建系统还不在Android中,并且该bug只在该版本中修复了(一个错误修复了Groovy 2.3.5发布了)。然后我就可以使用ActionBarActivity,现在可以看到操作栏图标。谢谢大家,特别是夸克。
答案 0 :(得分:0)
扩展ActionBarActivity
而不是Activity
,即制作
public class HomeActivity extends Activity
作为
public class HomeActivity extends ActionBarActivity
ActionBarActivity
来支持工具栏。要使用工具栏,请使用 -
public class HomeActivity extends AppCompatActivity
请务必在build.gradle (Module: app)
-
dependencies {
compile 'com.android.support:appcompat-v7:22.1.1'
}
答案 1 :(得分:0)
我尝试编译你的代码,以下内容对我有用。
对于要为其显示图标的所有菜单项,将app:showAsAction
替换为android:showAsAction
。