0

検索のためのオートコンプリートテキストビューでアクションバーを作成する方法の研究が始まりました。私が見つけた解決策のほとんどは、私が探しているものに近づいていますが、それらはすべて、1行のアクションバーに追加された任意のビューと追加のビューを詰め込むことに集中しているようです。フラグメントの別の行にあるeditTextのAndroidアクションバー

さらに複雑ですが、これはすべて、親アクティビティーにアクション・バーがすでにあるビュー・ページャー・フラグメントにあります。したがって、ツールバーでsetSupportingActionBar呼び出しを使用すると、不正な状態の例外がスローされます。

私が達成していることが実際にはサポートされているのかどうかはわかりませんが、ここにはあります。

私が探しています最終結果はここでは、この

enter image description here

ですが、私は

を書いたものである* autocomplete.xml *

という名前のオートコンプリートテキストビューを含むカスタムビュー
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

    <AutoCompleteTextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/search_text_view" 
     android:paddingTop="15dp" 
     android:paddingBottom="15dp" 
     android:paddingLeft="20dp" 
     android:paddingRight="20dp" 
     android:drawableLeft="@drawable/ic_search_blue" 
     android:background="@drawable/white_edittext"/> 

</LinearLayout> 

ここで私がなってしまうことだから私は何をしようとしていると仮定して、この

enter image description here

あるアクションバー

private void initializeActionsBarWithAutocomplete(){ 
     ActionBar actionBar = ((MyParentActivity) getActivity()).getSupportActionBar(); 
     actionBar.setTitle(getResources().getString(R.string.default_title)); 

     View autoCompleteView = LayoutInflater.from(getContext()).inflate(R.layout.autocomplete, null); 
     mSearchTextView = (AutoCompleteTextView) autoCompleteView.findViewById(R.id.search_text_view); 
     mSearchTextView.setAdapter(mTypeAheadAdapter); 
     mSearchTextView.setOnItemClickListener(this); 
     mSearchTextView.addTextChangedListener(this); 

     actionBar.setCustomView(autoCompleteView); 
     actionBar.setDisplayShowCustomEnabled(true); 
     actionBar.setDisplayShowTitleEnabled(true); 
     actionBar.setDisplayHomeAsUpEnabled(true); 
    } 

セットアップするために使用私のフラグメントのコードがあります可能な限り、私は少なくとも正しい道を歩いています。私は、カスタムビュー一致の親を持つことは、テキストビューがそれ自身の行を取って、それに応じてアクションバーのサイズを拡大することを強制するだろうと仮定しました。それは明らかにそうではありません。私はあなたがアクションバーの高さを明示的に設定できるいくつかの記事を見ましたが、私が理解できるものから、その方法はアクションバーのビューの下に白いスペースの束と同じ外観になります。

答えて

1

ToolbarウィジェットをXMLで使用し、必要に応じてカスタマイズできます。ここで

AutoCompleteTextViewを含むToolbarのレイアウトです:あなたJAVAコードで

<android.support.design.widget.AppBarLayout 
    android:id="@+id/appBarLayout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/AppTheme.AppBarOverlay"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="?attr/colorPrimary" 
     app:layout_scrollFlags="scroll|enterAlways" 
     app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
     app:titleTextColor="#FFFFFF"> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      android:paddingTop="20dp"> 

      <TextView 
       android:id="@+id/toolbar_title" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="8dp" 
       android:text="@string/app_name" 
       android:textColor="#ffffff" 
       android:textSize="20sp" 
       android:textStyle="bold" /> 

      <android.support.v7.widget.CardView 
       android:layout_width="match_parent" 
       android:layout_height="40dp" 
       android:layout_margin="8dp" 
       android:layout_centerInParent="true" 
       cardview:cardBackgroundColor="#ffffff" 
       cardview:cardCornerRadius="2dp" 
       cardview:cardElevation="0dp"> 

       <RelativeLayout 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:focusable="true" 
        android:focusableInTouchMode="true"> 

        <AutoCompleteTextView 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:id="@+id/search_text_view" 
         android:paddingTop="15dp" 
         android:paddingBottom="15dp" 
         android:paddingLeft="20dp" 
         android:paddingRight="20dp" 
         android:drawableLeft="@drawable/ic_search_blue" 
         android:background="@drawable/white_edittext"/> 

       </RelativeLayout> 
      </android.support.v7.widget.CardView> 
     </LinearLayout> 
    </android.support.v7.widget.Toolbar> 

</android.support.design.widget.AppBarLayout> 

はこれを試してみてください。

Toolbar mToolBar; 
ActionBar mActionBar; 
AutoCompleteTextView mSearchTextView; 

private void initializeActionsBarWithAutocomplete(){ 

    // ToolBar 
    mToolBar = (Toolbar) findViewById(R.id.toolbar); 

    // AutoCompleteTextView 
    mSearchTextView = (AutoCompleteTextView) mToolBar.findViewById(R.id.search_text_view); 
    mSearchTextView.setAdapter(mTypeAheadAdapter); 
    mSearchTextView.setOnItemClickListener(this); 
    mSearchTextView.addTextChangedListener(this); 

    setSupportActionBar(mToolBar); 

    // ActionBar 
    mActionBar = getSupportActionBar(); 
    mActionBar.setTitle(getResources().getString(R.string.default_title)); 
    mActionBar.setDisplayHomeAsUpEnabled(true); 
} 

OUTPUT:

enter image description here

希望これは私が私の「initializeActionsBarWithAutocomplete」メソッドを修正することにより、たとえば、カスタムアクションバー(プログラムで私はと仮定しています)を適用する方法〜

+0

を助けますか? – pat8719

+0

私は自分の答えを更新しました。これを試してください – FAT

+0

これは、親アクティビティに既に既存のアクションバーがあるフラグメントで発生しているという複雑な問題です。私はそれに応じて質問を更新します – pat8719

関連する問題