【问题标题】:search view with back icon in android在android中搜索带有后退图标的视图
【发布时间】:2014-09-25 09:14:09
【问题描述】:

在我的项目中,我使用的是 android 的搜索视图。 它工作正常。

但我遇到了一个问题,即在搜索视图展开时与背景图像有关。

这是我的带有图标和其他搜索和可绘制图标的操作栏。

现在当我点击搜索图标时

这里的图标是变化。默认情况下,它采用启动器图像。但我希望它与图 1 中的显示相同。

那么任何人都可以帮助我解决这个问题。

编辑1

这是我的操作栏样式 xml。

 <style name="Theme.Example" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="actionBarItemBackground">@drawable/selectable_background_example</item>
    <item name="actionBarTabStyle">@style/ActionBarTabStyle.Example</item>
    <item name="actionBarStyle">@style/ActionBar.Solid.Example</item>
    <item name="actionModeBackground">@drawable/cab_background_top_example</item>
    <item name="actionModeSplitBackground">@drawable/cab_background_bottom_example</item>
    <item name="actionBarTabTextStyle">@style/ActionBarTabText.Example</item>
    <!-- Light.DarkActionBar specific -->
    <item name="android:textColorHighlight">#99c0c0c0</item>
</style>

编辑2

操作栏的子样式

 <style name="ActionBar.Solid.Example"   parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <item name="android:icon">@drawable/ic_logo</item>
    <item name="background">@drawable/ab_solid_example</item>
    <item name="backgroundStacked">@drawable/ab_stacked_solid_example</item>
    <item name="backgroundSplit">@drawable/ab_bottom_solid_example</item>
</style>

编辑 3

这是我的 onCreateOptionsMenu 方法。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu items for use in the action bar
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main, menu);
    try {
        search = (MenuItem) menu.findItem(R.id.search);

        MenuItemCompat.setOnActionExpandListener(search,
                new OnActionExpandListener() {
                    @Override
                    public boolean onMenuItemActionCollapse(MenuItem item) {
                        // Do something when collapsed

                        layoutList.setVisibility(View.INVISIBLE);
                        return true; // Return true to collapse action view
                    }

                    @Override
                    public boolean onMenuItemActionExpand(MenuItem item) {
                        // Do something when expanded

                        layoutList.setVisibility(View.VISIBLE);
                        return true; // Return true to expand action view
                    }
                });

        SearchView searchView = (SearchView) MenuItemCompat
                .getActionView(search);

        setSearchTextColour(searchView);

        searchView.setQueryHint(getString(R.string.search_hint));
        searchView.setOnQueryTextListener(this);
        searchView.setOnCloseListener(new OnCloseListener() {

            @Override
            public boolean onClose() {
                // TODO Auto-generated method stub
                Debugger.debugE("on close");

                layoutList.setVisibility(View.INVISIBLE);
                return false;
            }
        });
    } catch (Exception e) {
        // TODO: handle exception
    }

    return super.onCreateOptionsMenu(menu);
}

并显示操作栏

    ActionBar actionBar = getSupportActionBar();
    SpannableString s = new SpannableString(getString(R.string.app_name));
    s.setSpan(new TypeFaceSpan(getContext(),
            getString(R.string.font_gothum)), 0, s.length(),
            Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    actionBar.setTitle(s);
    actionBar.setDisplayShowHomeEnabled(true);
    actionBar.setDisplayShowTitleEnabled(true);
    actionBar.setBackgroundDrawable(new ColorDrawable(Color
            .parseColor("#bb0404")));

我没有用过其他任何东西。

注意:在第一张图片中显示的主屏幕图标的所有其他导航中即将到来。 问题仅与搜索视图有关。

提前致谢。

布斯卡尼亚

【问题讨论】:

  • 请向我们展示您的操作栏样式 xml。

标签: android android-actionbar searchview android-actionbar-compat


【解决方案1】:

尝试在您的 styles.xml 上更改您的应用主题

你可以这样做:

<style name="AppTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="android:actionBarStyle">@style/ActionBar</item>
</style>

<style name="ActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <item name="android:icon">@drawable/myicon</item>
</style>

【讨论】:

  • 我已经在清单文件中设置了图标。我还需要改变这个吗?
  • 您为什么不尝试一下;) 更改您的 &lt;item name="actionBarStyle"&gt;@style/ActionBar.Solid.Example&lt;/item&gt; 以创建您定义图标的自定义样式。
  • 我试过这段代码,它工作正常。当您单击搜索视图时,设置与启动器不同的操作栏图标将起作用。您必须使用其他一些与图标混淆的代码
  • Pedro Oliveria 我更新了我的代码。请检查这个。如果有什么错误?
  • 它在 4.0 版以上运行。 2.3.3以上版本是否有其他方案支持?
【解决方案2】:

创建自定义操作栏:

 LayoutInflater inflator = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
 View v = inflator.inflate(R.layout.custom_search_actionbar, null);
 actionBar.setCustomView(v);            
 _searchView = (SearchView)v.findViewById(R.id.searchView);
 ....
 ....
 ....

并定义视图的 id 并使用 .

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    • 2021-05-29
    • 2014-08-19
    • 2015-01-31
    • 1970-01-01
    • 2013-05-16
    相关资源
    最近更新 更多