2016-12-12 2 views
0

こんにちは、私は自分のsearchviewにproblemaがあります。Android searchviewの提案がリジッドを埋める

私は検索の捜索を全幅にしようとしていますが、示唆にはリジッドパディングがあります。ここで

screenshootです:

my app searchview

そして、私のJavaコード:

public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_main, menu); 


    SearchManager searchManager=(SearchManager)getSystemService(Context.SEARCH_SERVICE); 
    final MenuItem item=menu.findItem(R.id.procura); 

    MenuItemCompat.setOnActionExpandListener(item, new MenuItemCompat.OnActionExpandListener() { 
     @Override 
     public boolean onMenuItemActionExpand(MenuItem item) { 
      tbs.setVisibility(View.GONE); 
      vwpgr.setVisibility(View.GONE); 
      return true; 
     } 

     @Override 
     public boolean onMenuItemActionCollapse(MenuItem item) { 
      tbs.setVisibility(View.VISIBLE); 
      vwpgr.setVisibility(View.VISIBLE); 
      return true; 
     } 
    }); 

    searchView=(SearchView) MenuItemCompat.getActionView(item); 
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 
    searchView.setQueryHint(getResources().getString(R.string.app_hint)); 
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
     @Override 
     public boolean onQueryTextSubmit(String query) { 
      Intent search=new Intent(MainActivity.this,searchableactivity.class); 
      search.putExtra("searchquery",query); 
      startActivity(search); 
      searchView.clearFocus(); 
      item.collapseActionView(); 
      return true; 
     } 

     @Override 
     public boolean onQueryTextChange(String newText) { 
      return false; 
     } 
    }); 

    final AutoCompleteTextView searchTextView = (AutoCompleteTextView) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text); 
    //this remove left padding 
    searchTextView.setDropDownAnchor(R.id.appbar); 
    // this is not working 
    searchTextView.setDropDownWidth(ViewGroup.LayoutParams.WRAP_CONTENT); 
    //and i tryed this too: searchTextView.setDropDownWidth(ViewGroup.LayoutParams.MATCH_PARENT); 
    try { 
     Field mCursorDrawableRes = TextView.class.getDeclaredField("mCursorDrawableRes"); 
     mCursorDrawableRes.setAccessible(true); 
     mCursorDrawableRes.set(searchTextView, R.drawable.search_cursor); //This sets the cursor resource ID to 0 or @null which will make it visible on white background 
    } catch (Exception e) { 
    } 

    return true; 
} 

私のメニューのxml:

<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=".MainActivity"> 
<item 
    android:id="@+id/procura" 
    android:title="@string/app_hint" 
    android:icon="@mipmap/ic_search_black_24dp" 
    app:showAsAction="ifRoom|collapseActionView" 
    app:actionViewClass="android.support.v7.widget.SearchView"/> 

A

solution 1

solution 2

solution 3

どのように私はこの問題を解決することができます:ND私はこれをしようと試みましたか?

答えて

0

ことがあるので、唯一の画面文句を言わない作業の親や幅に一致するようにSearchView.SearchAutoCompleteビューDropDownWidthを設定することにより、この

searchTextView.setDropDownWidth(ViewGroup.LayoutParams.MATCH_PARENT); 

の代わりにここで

searchTextView.setDropDownWidth(ViewGroup.LayoutParams.WRAP_CONTENT); 
+0

私はそれを試してみましたが、作業をしていないが、私は同じ結果を持っています –

0

私の解決策である、 をお試しくださいすべての面にパディングを持つバックグラウンドリソースによって制限されます。

私はそれを働かせるためには、背景も変えなければならないことを理解しました。

ソリューション: (これは毎回ビューレイアウト寸法の変更を行わなければなりません):

searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
     @Override 
     public boolean onQueryTextSubmit(String query) { 
      return false; 
     } 

     @Override 
     public boolean onQueryTextChange(String query) { 
      SearchView.SearchAutoComplete mSearchSrcTextView = (SearchView.SearchAutoComplete) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text); 
      mSearchSrcTextView.setDropDownWidth(getResources().getDisplayMetrics().widthPixels); 
      mSearchSrcTextView.setDropDownBackgroundResource(R.color.colorGray); 

      modelManager.getLocationsSearchResults(query); 
      return true; 
     } 
}); 

Result

関連する問題