小编Mik*_*ike的帖子

创建看起来像材料设计准则的SearchView

我目前正在学习如何将我的应用程序转换为Material设计,现在我有点卡住了.我添加了工具栏,我的导航抽屉覆盖了所有内容.

我现在正在尝试创建一个类似于材料指南中的可扩展搜索: 在此输入图像描述

这就是我现在所拥有的,我无法弄清楚如何使它如上所述:
我的搜索

这是我的菜单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/action_search"
        android:icon="@android:drawable/ic_menu_search"
        android:title="Search"
        app:showAsAction="always"
        app:actionViewClass="android.support.v7.widget.SearchView" />
</menu>
Run Code Online (Sandbox Code Playgroud)

这有效,我得到一个扩展到SearchView的菜单项,我可以很好地过滤我的列表.虽然看起来不像第一张照片.

我尝试使用MenuItemCompat.setOnActionExpandListener(),R.id.action_search所以我可以将主页图标更改为后退箭头,但这似乎不起作用.侦听器中没有任何内容被触发.即使它起作用,它仍然不会非常接近第一张图像.

如何在新的appcompat工具栏中创建看起来像材质指南的SearchView?

android toolbar android-appcompat searchview material-design

132
推荐指数
7
解决办法
13万
查看次数

DrawerLayout - 异常调度输入事件

我最近在一个星期前开始在一个新项目中使用DrawerLayout,它一切正常.除了用我的手指轻扫它的奇怪时间,它会崩溃.

如果我使用ActionBar Up/Home MenuItem,它每次都会正常工作.

在LogCat中,我得到两个堆栈跟踪,它们似乎都指向内部的android位置,所以我不知道如何解决这个问题.

我刚刚尝试创建一个新的应用程序,以查看它是否是我之前正在做的事情,但它也发生在新的应用程序中.

我在"新建Android应用程序"窗口中使用主/详细信息流模板创建了新应用程序,将所有内容保留为默认值,然后更改了activity_item_list.xml以将其包含在内:

<android.support.v4.widget.DrawerLayout  
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <fragment
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/item_list"
        android:name="com.navdrawertest.ItemListFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="16dp"
        tools:context=".ItemListActivity"
        tools:layout="@android:layout/list_content" />

    <!-- Navigation Drawer -->
    <ListView
        android:id="@+id/left_drawer"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="#111" />
 </android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)

DrawerLayout显示,我仍然可以从屏幕边缘拖动它,但它仍然在此测试应用程序中崩溃.

这是我用手指拖动后看到的堆栈跟踪:

07-26 09:29:45.574: E/InputEventReceiver(19085): Exception dispatching input event.
07-26 09:29:45.574: E/MessageQueue-JNI(19085): Exception in MessageQueue callback: handleReceiveCallback
07-26 09:29:45.584: E/MessageQueue-JNI(19085): java.lang.NullPointerException
07-26 09:29:45.584: E/MessageQueue-JNI(19085):  at android.support.v4.widget.DrawerLayout.isContentView(DrawerLayout.java:840)
07-26 09:29:45.584: E/MessageQueue-JNI(19085):  at android.support.v4.widget.DrawerLayout.onInterceptTouchEvent(DrawerLayout.java:866)
07-26 09:29:45.584: E/MessageQueue-JNI(19085):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1852)
07-26 09:29:45.584: E/MessageQueue-JNI(19085):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209)
07-26 09:29:45.584: …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-fragments android-support-library drawerlayout

11
推荐指数
2
解决办法
1万
查看次数