• Careless Me


    我在百度知道上提了一个问题

    如图我在menu.xml里试图加一个search的按钮,但我从网页上复制了图中第二个item里的代码,运行的时候,这个item却总是出现在overflow(下拉菜单)里面,不出现在action bar。而我用手打出第一个item里的代码之后,却可以在action bar上显示。这是为什么?两段代码完全一样啊。

    这两段代码我调了很久。最后看来看去,发现这个段代码并不是「完全一样」。

    showAsAction属性之前的命名空间,一个是android,一个是app。结果就导致没有使用命名空间的下面的item无效。

    那为什么其他的android打头的代码有效?来看看完整的menu头:

    <menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        tools:context="com.larry.projecty.MainActivity" >

    android对应的空间是/apk/res/android,而app对应/apk/res-auto.而android developers上,也就我复制的那段代码的来源,只用了这一个命名空间:

    <menu xmlns:android="http://schemas.android.com/apk/res/android">

    我TM已经糊涂了。I don't get the fuck.好吧,我就用app做命名空间好了。草。

    草。搞这些SB代码,这个JB细节搞了一晚上,结果这只是一堆错误中的一个。想弄懂所有一切,哪有那么多精力和时间??真JB累。

    干。

     ----------------------------------------------

    冷静了一会儿,想起来原来为了支持2.x系统而用自己的命名空间。

    查了一下,网上说:

    「这是告诉系统,showAsAction使用library的XML attributes

    也就是说在用其他的library的时候要用自己的命名空间。

    此外还有:

    yourapp:actionViewClass="android.support.v7.widget.SearchView"

    yourapp:actionProviderClass="android.support.v7.widget.ShareActionProvider"

    我操,一箭双雕,正好解决了为什么得不到search view的问题了。

    除了在xml里改命名空间,在MainActivity.java里也要改import哦,改成:

    import android.support.v7.widget.SearchView;

    操,好高兴。

    可怜的程序狗啊。

    参考:

    http://blog.csdn.net/tianjf0514/article/details/13278539

  • 相关阅读:
    vue.js---利用vue cli脚手架工具+webpack创建项目遇到的坑
    List<KeyValuePair<TKey,TValue>> 与 Dictionary<TKey,TValue> 不同
    StackExchange.Redis 官方文档(一) Basics
    离线安装chrome插件
    Cocoapods的安装与使用
    多线程
    作业二:个人编程项目——编写一个能自动生成小学四则运算题目的程序
    初学者如何在博客园发布博客
    作业一:建立博客、自我介绍、速读教材、学习进度总结
    计科131同学们的博客
  • 原文地址:https://www.cnblogs.com/larrylawrence/p/3722334.html
Copyright © 2020-2023  润新知