2017-10-23 22 views
0

標準のSearchViewを実装しました。しかし、検索がアクティブなときに、SearchViewの右側に奇妙なスペースがあります(写真参照)。ソースコードはhereです。閉じるボタンを右に揃える方法は?私はAndroid 7でそれをテストしました。私はここにテキストを書く必要がありますが、その理由はありません。SearchViewの閉じるボタンの配置

enter image description here

メニュー:

<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.android.nigeriaexams.ui.SettingsFragment"> 
    <item android:id="@+id/action_search" 
     android:title="Search" 
     android:icon="@drawable/ic_search" 
     app:showAsAction="collapseActionView|always" 
     app:actionViewClass="android.support.v7.widget.SearchView" 
     android:layout_width="wrap_content" /> 
</menu> 

活性

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.menu_search, menu); 
    MenuItem searchItem = menu.findItem(R.id.action_search); 
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem); 
    //*** setOnQueryTextFocusChangeListener *** 
    searchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() { 

     @Override 
     public void onFocusChange(View v, boolean hasFocus) { 

     } 
    }); 

    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 

     @Override 
     public boolean onQueryTextSubmit(String query) { 

      return false; 
     } 

     @Override 
     public boolean onQueryTextChange(String searchQuery) { 
      myAppAdapter.filter(searchQuery.toString().trim()); 
      listView.invalidate(); 
      return true; 
     } 
    }); 

    MenuItemCompat.setOnActionExpandListener(searchItem, new MenuItemCompat.OnActionExpandListener() { 
     @Override 
     public boolean onMenuItemActionCollapse(MenuItem item) { 
      // Do something when collapsed 
      return true; // Return true to collapse action view 
     } 

     @Override 
     public boolean onMenuItemActionExpand(MenuItem item) { 
      // Do something when expanded 
      return true; // Return true to expand action view 
     } 
    }); 
    return true; 
} 

レイアウト:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".SearchActivity"> 

    <ListView 
     android:id="@+id/listView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

    </ListView> 

</RelativeLayout> 

答えて

0

ツールバーに画像を追加するだけで、次のコードを試してみることができます。あなたはメニューが必要ない。

<android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     app:popupTheme="@style/AppTheme.PopupOverlay" > 

       <RelativeLayout 
        android:gravity="center_vertical" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content"> 


        <ImageView 
         android:id="@+id/camera" 
         android:src="@drawable/camera" 
         android:layout_toStartOf="@+id/search" 
         android:paddingStart="@dimen/margin_10" 
         android:paddingEnd="@dimen/margin_10" 
         android:layout_width="wrap_content" 
         android:layout_height="match_parent" /> 


        <ImageView 
         android:id="@+id/search" 
         android:layout_alignParentEnd="true" 
         android:src="@drawable/search" 
         android:paddingStart="@dimen/margin_10" 
         android:paddingEnd="@dimen/margin_10" 
         android:layout_marginEnd="@dimen/margin_6" 
         android:layout_width="wrap_content" 
         android:layout_height="match_parent" /> 

       </RelativeLayout> 



     </android.support.v7.widget.Toolbar> 
+0

私はこのコードではアイコンを追加するが、開かれた検索ビューには正しく閉じるボタンを配置しないため、問題は解決しないと考えています。 – Michalsx

0

searchView.setMaxWidth(Integer.MAX_VALUE);

これは、右端できるだけ近くアイコンを設定します。私はタブレットデバイスで実行しているときに同じ問題を抱えていました。閉じるアイコンはツールバーの中央にありましたが、今は右側にあります。

関連する問題