代码之家  ›  专栏  ›  技术社区  ›  GPH

Kotlin Android搜索菜单项在活动开始时集中显示

  •  2
  • GPH  · 技术社区  · 7 年前

    问题:当活动开始时,如何使搜索菜单项集中? 我希望活动以下面的第二张图片开始。

    这里有我的代码:

    覆盖fun oncreate(savedinstancestate:bundle?){ super.oncreate(保存的状态) setContentView(r.layout.activity搜索) 设置支持工具栏(qponsearch_工具栏) } 覆盖fun onCreateOptions菜单(菜单:菜单):布尔值{ //对要在操作栏中使用的菜单进行充气 menuiflatter.inflate(r.menu.search_menu,menu) val searchitem=menu.finditem(r.id.app_bar_search) 如果(搜索项!=空){ val searchview=searchitem.actionview作为searchview val searchhint=getstring(r.string.searchhint) searchview.setqueryhint(searchhint) searchView.setOnQueryTextListener(对象:searchView.onQueryTextListener{ 覆盖fun onquerytextsubmit(query:string?):布尔值{ 返回false } 覆盖fun onquerytextchange(newtext:string?):布尔值{ 如果(newtext!!.ToString().IsNotEmpty()){ StartRecyclerView(GenerateData(NewText))。 公司列表。清除() } 否则{ StartRecyclerView(GenerateData(NewText))。 公司列表。清除() } 返回false } }) } 返回super.onCreateOptions菜单 }

    以下是XML文件:

    <?xml version=“1.0”encoding=“utf-8”?gt;
    <线性布局
    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”
    android:layout_width=“匹配父级”
    android:layout_height=“匹配父级”
    android:background=“@mipmap/bg”
    android:orientation=“垂直”
    工具:context=“searchqponactivity”>
    
    <android.support.v7.widget.toolbar
    android:id=“@+id/qponsearch_工具栏”
    android:layout_width=“匹配父级”
    app:title=“”
    android:layout_height=“56dp”
    android:background=“@color/white50”
    android:elevation=“4dp”
    android:theme=“@style/themeoverlay.appcompat.actionbar”
    app:popuptheme=“@style/themeoverlay.appcompat.light”
    /gt;
    
    <android.support.v7.widget.recyclerview
    android:id=“@+id/qponsearch_recyclerview”
    android:layout_width=“匹配父级”
    android:layout_height=“wrap_content”>
    </android.support.v7.widget.recyclerview>
    
    
    
    
    
    
    
    
    

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_search_qpon)
        setSupportActionBar(qponSearch_toolbar)
    }
    
    override fun onCreateOptionsMenu(menu: Menu): Boolean {
        // Inflate the menu to use in the action bar
        menuInflater.inflate(R.menu.search_menu, menu)
    
        val searchItem = menu.findItem(R.id.app_bar_search)
    
        if (searchItem!=null) {
            val searchView = searchItem.actionView as SearchView
    
            val searchHint = getString(R.string.searchHint)
            searchView.setQueryHint(searchHint)
    
            searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
                override fun onQueryTextSubmit(query: String?): Boolean {
                    return false
                }
    
                override fun onQueryTextChange(newText: String?): Boolean {
                    if (newText!!.toString().isNotEmpty()) {
    
                        startRecyclerView(generateData(newText))
                        companyList.clear()
                    }
                    else {
                        startRecyclerView(generateData(newText))
                        companyList.clear()
                    }
                    return false
                }
            })
        }
    
        return super.onCreateOptionsMenu(menu)
    }
    

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        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"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@mipmap/bg"
        android:orientation="vertical"
        tools:context=".SearchQponActivity">
    
        <android.support.v7.widget.Toolbar
            android:id="@+id/qponSearch_toolbar"
            android:layout_width="match_parent"
            app:title=""
            android:layout_height="56dp"
            android:background="@color/white50"
            android:elevation="4dp"
            android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
            />
    
        <android.support.v7.widget.RecyclerView
            android:id="@+id/qponSearch_recyclerView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >
        </android.support.v7.widget.RecyclerView>
    
    </LinearLayout>
    

    <?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/app_bar_search"
            android:icon="@android:drawable/ic_menu_search"
            android:title="Search"
            app:actionViewClass="android.support.v7.widget.SearchView"
            app:showAsAction="always" />
    
    
    </menu>
    

    enter image description here

    1 回复  |  直到 7 年前
        1
  •  1
  •   Avijit Karmakar    7 年前

    expandActionView() searchItem onCreateOptionsMenu()

    override fun onCreateOptionsMenu(menu: Menu?): Boolean {
        menuInflater.inflate(R.menu.test_menu, menu)
        val searchItem = menu?.findItem(R.id.app_bar_search)
        searchItem?.expandActionView() // This line will expand the search view.
        ....
    }
    

    always ifRoom|collapseActionView

    <item
        android:id="@+id/app_bar_search"
        android:icon="@android:drawable/ic_menu_search"
        android:title="Search"
        app:actionViewClass="android.support.v7.widget.SearchView"
        app:showAsAction="ifRoom|collapseActionView" />