【问题标题】:Action Bar not showing in 4.2.24.2.2 中未显示操作栏
【发布时间】:2013-08-23 16:11:26
【问题描述】:

解决方案:图片搜索图标有问题。 Android没有找到搜索动作的图像,我没有添加它们 res-folders ,之后开始显示...

我正在尝试将操作栏添加到应用程序中,并且我正在按照Google Developer Website 中显示的基本应用程序教程进行操作

我已经编写了以下代码。

MainActivity

public class MainActivity extends ActionBarActivity {

    public void openSearch(){

        System.out.println("TEST SEARCH");

    }
    public void openSettings(){

        System.out.println("TEST SETTINGS");

    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main_activity_actions, menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle presses on the action bar items
        switch (item.getItemId()) {
            case R.id.action_search:
                openSearch();
                return true;
            case R.id.action_settings:
                openSettings();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

}

res/menu/main_activity_actions.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <!-- Search, should appear as action button -->
    <item android:id="@+id/action_search"
          android:icon="@drawable/ic_action_search"
          android:title="@string/action_search"
          android:showAsAction="ifRoom" />
    <!-- Settings, should always be in the overflow -->
    <item android:id="@+id/action_settings"
          android:title="@string/action_settings"
          android:showAsAction="never" />
</menu>

AndroidManifest.xml

<uses-sdk android:minSdkVersion="7"  android:targetSdkVersion="18" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.sample.actionbarsample.MainActivity"
        android:label="@string/app_name" 
        android:theme="@style/Theme.AppCompat" 
        >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

但不是像这样的操作栏

我得到一个选项菜单。当我在运行应用程序时按下菜单按钮时会出现。

我在教程中遗漏了什么,或者代码有什么问题?

编辑

按照 beworker 的要求,我得到了这个结果,但仍然缺少搜索框。

【问题讨论】:

  • 试试我的...肯定会工作
  • @mohit 是的,我按照你的建议做了,屏幕截图也是在这些更改之后

标签: android android-actionbar android-4.2-jelly-bean


【解决方案1】:

您的代码或教程都没有问题。这都是关于你的模拟器的配置。您需要以具有软件按钮的方式配置您的模拟器。切换到“设备定义”选项卡并编辑使用“软件”按钮的设备,如下图所示。

或者,您可以简单地取消选中 ADV 配置中的“键盘/硬件键盘存在”属性(见下图)并重新启动您的模拟器。

如果存在硬件菜单按钮,Android 4.0 会模拟旧式菜单。这就是为什么所有菜单操作都将进入那里的原因。如果您在模拟器中禁用硬件菜单,则操作将按预期转到操作栏。

请注意,在带有硬件菜单按钮(如三星 G2、G3 等)的手机上,菜单弹出窗口仍会出现,您无法在代码中更改此设置。 Android 将决定在每台设备上什么对用户体验更好。

更新

另一个注释。如果您使用兼容性库,请确保使用xmlns:yourapp="http://schemas.android.com/apk/res-auto"yourapp:showAsAction="always",如下所述。

但是,如果您的应用使用支持库来兼容 低至 Android 2.1 的版本,showAsAction 属性不 可从 android: 命名空间获得。相反,这个属性是 由支持库提供,您必须定义自己的 XML 命名空间并将该命名空间用作属性前缀。

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
    <!-- Search, should appear as action button -->
    <item android:id="@+id/action_search"
          android:icon="@drawable/ic_action_search"
          android:title="@string/action_search"
          yourapp:showAsAction="always"  />
    ...
</menu>

【讨论】:

  • 我按照你说的做了。我确实得到了操作栏,但即使按照@mohit 在他的回答中建议的操作,搜索栏也不见了。
  • android:showAsAction="always" 在带有@+id/action_search 的项目上将使“搜索”项目始终显示,如果您需要搜索框,那么您需要做更多。跨度>
  • 搜索图标没有出现在选项按钮旁边,如操作栏的第一张图片所示。
  • 我有它的main_activity_actions.xml 文件。
  • 你扩展的 ActionBarActivity 是什么?你使用兼容性库吗?
【解决方案2】:

我在教程中遗漏了什么,或者代码有什么问题?

是的,有区别。 尝试从您的项目中删除 sample 词。

实际上您的项目名称占据了所有空间,并且在搜索菜单项中您已要求系统提供空间是否有可用的空间/空间,这不是由于项目名称过长(可能是活动或其他)在您的情况下。

因此,要么将您的项目名称更改为较小的名称,要么像这样使用“始终”:

  <item android:id="@+id/action_search"
      android:icon="@drawable/ic_action_search"
      android:title="@string/action_search"
      android:showAsAction="always" />

【讨论】:

  • 我将其更改为android:showAsAction="always",并将strings.xml 中的appName 编辑为&lt;string name="app_name"&gt;&lt;/string&gt; 仍然没有搜索框。
  • 这是应用更新后的屏幕截图...实际上包括两个建议...
  • 再一次检查尝试只使用我的。重置模拟器。
猜你喜欢
  • 2012-12-15
  • 2015-05-09
  • 2014-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-09
  • 1970-01-01
相关资源
最近更新 更多