【问题标题】:Icon search doesn't appear in toolbar - Android 4.4图标搜索未出现在工具栏中 - Android 4.4
【发布时间】:2018-05-14 02:06:15
【问题描述】:

伙计们,我用 Java 为 Android 开发了一个应用程序(最低 SDK 19),我尝试在我的应用程序中添加一个搜索按钮,但这个图标没有出现。请看下面的代码:

这是我在 @menu 文件夹中的 search.xml

<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http;//schemas.android.com/apk/res-auto">
<item
    android:id="@+id/search"
    android:icon="@drawable/ic_search"
    android:title="@string/search"
    android:orderInCategory="100"
    app:showAsAction="ifRoom"/>
</menu>

这可能是 Activity Main 为什么我的图标搜索没有出现?因为我已经在@drawble 中添加了图标

package com.squarcy.equals;

import android.support.v7.widget.Toolbar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.TextView;
import android.content.res.Resources;

public class MainActivity extends AppCompatActivity {

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

    // Toolbar
    Toolbar toolbar = findViewById(R.id.toolbar);
    TextView title = toolbar.findViewById(R.id.toolbar_title);
    setSupportActionBar(toolbar);
    title.setText(toolbar.getTitle());
    getSupportActionBar().setDisplayShowTitleEnabled(false);
    toolbar.setPadding(0, getStatusBarHeight(), 0, 0);
}

// Get Status Bar Height
private int getStatusBarHeight() {
    int height;
    Resources myResources = getResources();
    int idStatusBarHeight = myResources.getIdentifier(
            "status_bar_height", "dimen", "android");
    if (idStatusBarHeight > 0) {
        height = getResources().getDimensionPixelSize(idStatusBarHeight);
    }else{
        height = 0;
    }
    return height;
    }

    // Inflate Search
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.search,menu);
    return true;
    }

    // If Icon Search is Clicked
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        return super.onOptionsItemSelected(item);
    }
    }

【问题讨论】:

    标签: java android


    【解决方案1】:

    尝试首先设置showAsAction="always" 并删除此行toolbar.setPadding(0, getStatusBarHeight(), 0, 0); 以确保填充不会干扰搜索按钮的呈现过程。

    【讨论】:

    • 我删除了 toolbar.setPadding 并将 showAsAction 更改为 always 但图标不出现!
    • 打开选项菜单(3个点)是否出现在上面?
    • 是的,我在选项菜单中有一个字符串 android:title="@string/search"
    • 如果你愿意,我可以邀请你加入 GitLab 的项目来解决这个问题
    • 好的,所以如果按钮出现,则充气是正确的。不起作用的是showAsAction。您使用哪个版本的支持?取决于使用app:showAsActionandroid:showAsAction 所需的支持库版本。您可以尝试使用android:showAsAction,也可以提供您的 Gradle 模块文件。
    【解决方案2】:

    我终于找到了解决办法!! Android Studio 给了我错误“应该使用 app:showAsAction 和带有 xmlns:app="schemas.android.com/apk/res-auto" 的 appcompat 库。如果我按照建议更改了我的 XML,我在 actionBar 中的菜单消失了进入溢出。

    其中导入了 appcompat 库,并造成了所有麻烦。由于我只针对 Android 4.4 及更高版本,我能够删除这两行。问题解决了!

    真正的罪魁祸首原来是文件 build.gradle 中的以下几行:

    dependencies {
        …
        compile 'com.android.support:appcompat-v7:22.1.1'
        compile 'com.android.support:support-v4:22.1.1'
    }
    

    这对我来说是 search.xml

     <item
            android:id="@+id/search"
            android:title="@string/search"
            android:icon="@drawable/ic_search"
            android:orderInCategory="100"
            app:showAsAction="ifRoom" />
    

    更多信息:https://developer.android.com/about/versions/android-4.4

    也可以帮忙:Item with app:showAsAction not showing

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-16
      • 2016-10-28
      • 1970-01-01
      • 1970-01-01
      • 2016-08-14
      • 2016-05-06
      • 1970-01-01
      • 2020-05-06
      相关资源
      最近更新 更多