Android ActionBar 图标未显示
Android ActionBar Icons not showing
我很沮丧,每件事都设置正确,甚至在渲染(使用 Android Studio 时)也会显示操作栏图标,但是当我 运行 它在物理智能手机上时(pocket neo 4.1.2) 它只显示 ic-launcher 和标题什么是解决方案?
activity_main_actions.xml
`
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<!-- Search Widget -->
<item android:id="@+id/action_search"
android:icon="@drawable/ic_action_b"
android:title="@string/action_search"
app:showAsAction="ifRoom"
/>
<!-- Location Found -->
<item android:id="@+id/action_location_found"
android:icon="@drawable/ic_action_location_found"
android:title="@string/action_new"
app:showAsAction="ifRoom" />
</menu>
`
main_activity.xml
`
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_height="match_parent"
tools:context=".MainActivity">
</RelativeLayout>
`
MainActivity.java
`
public class MainActivity extends Activity {
private ActionBar actionBar;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
actionBar = getActionBar();
// Hide the action bar title
actionBar.setIcon(R.mipmap.ic_launcher);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main_actions, menu);
return super.onCreateOptionsMenu(menu);
}
}
`
好的,根据我的检查结果 here 你的 phone 分辨率真的很小 (240 x 320)
因此,因为您使用的是 app:showAsAction="ifRoom"
,它只会在操作栏中有空间时显示。
如果您希望它始终显示,您需要将其更改为 app:showAsAction="always"
希望对您有所帮助,如果您对我的回答有任何其他问题,请随时在评论中提问。
根据我的经验,如果目标设备不是 v21(棒棒糖),您应该在定义 showAsAction
.[=15 时使用 android
命名空间,而不是 app
命名空间=]
如果您希望两者兼容,并且您的 IDE 抱怨 android
命名空间,请使用 app
命名空间创建一个新布局并将其放入您的 v21 布局文件夹.
已解决!
我添加了带有 minsdk = 14 的 support:appcompact-v7 是我的错误,
无论如何谢谢你的回答。
我很沮丧,每件事都设置正确,甚至在渲染(使用 Android Studio 时)也会显示操作栏图标,但是当我 运行 它在物理智能手机上时(pocket neo 4.1.2) 它只显示 ic-launcher 和标题什么是解决方案?
activity_main_actions.xml
`
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<!-- Search Widget -->
<item android:id="@+id/action_search"
android:icon="@drawable/ic_action_b"
android:title="@string/action_search"
app:showAsAction="ifRoom"
/>
<!-- Location Found -->
<item android:id="@+id/action_location_found"
android:icon="@drawable/ic_action_location_found"
android:title="@string/action_new"
app:showAsAction="ifRoom" />
</menu>
`
main_activity.xml `
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_height="match_parent"
tools:context=".MainActivity">
</RelativeLayout>
` MainActivity.java
`
public class MainActivity extends Activity {
private ActionBar actionBar;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
actionBar = getActionBar();
// Hide the action bar title
actionBar.setIcon(R.mipmap.ic_launcher);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main_actions, menu);
return super.onCreateOptionsMenu(menu);
}
}
`
好的,根据我的检查结果 here 你的 phone 分辨率真的很小 (240 x 320)
因此,因为您使用的是 app:showAsAction="ifRoom"
,它只会在操作栏中有空间时显示。
如果您希望它始终显示,您需要将其更改为 app:showAsAction="always"
希望对您有所帮助,如果您对我的回答有任何其他问题,请随时在评论中提问。
根据我的经验,如果目标设备不是 v21(棒棒糖),您应该在定义 showAsAction
.[=15 时使用 android
命名空间,而不是 app
命名空间=]
如果您希望两者兼容,并且您的 IDE 抱怨 android
命名空间,请使用 app
命名空间创建一个新布局并将其放入您的 v21 布局文件夹.
已解决!
我添加了带有 minsdk = 14 的 support:appcompact-v7 是我的错误, 无论如何谢谢你的回答。