2017-05-23 13 views
0

ActionBarには、右側にオーバーフローメニュー(3点のフライアウトメニュー)があります。私は、アクティビティ自体のActionBarを表示したくありません。実際に、私はすべての私の活動からアクションバーを削除:ListView Itemツールバーの表示オーバーフローメニューアクティビティツールバーではありません。

RES /のstyles.xml:私の活動の代わりに

<resources> 
    <!-- Base application theme. --> 
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    </style> 
</resources> 

、私は(私がカスタマイズされた)ツールバーを使用します。

activity_main。 XML:

<RelativeLayout ... android:fitsSystemWindows="true" > 
     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:minHeight="?attr/actionBarSize" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="?attr/colorPrimary"> 
     <ImageView android:layout_alignParentTop="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/yourStory" android:src="@drawable/ic_face_black_24dp" /> 
    </android.support.v7.widget.Toolbar> 

私が主な活動のためのツールバーのオーバーフローメニューを表示したくないので、私は、この行コメントアウト:

// @Override 
// public boolean onCreateOptionsMenu(Menu menu) { 
//  MenuInflater inflater = getMenuInflater(); 
//  inflater.inflate(R.menu.main_menu, menu); 
//  return true; 
// } 

今ではツールバーの下に、私はListViewコントロールを持っている:

<ListView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@+id/toolbar" 
     android:layout_centerHorizontal="true" android:id="@+id/listView" /> 

私は、独自のツールバーがあり、各リストビュー項目のカスタムレイアウトを持っているが:

<android.support.v7.widget.Toolbar 
     android:id="@+id/listToolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="@color/white"> 


    <ImageView 
      android:id="@+id/usericon" 
      android:layout_height="wrap_content" 
      android:layout_width="wrap_content" /> 
    <TextView 
      android:id="@+id/username" 
      android:layout_height="wrap_content" 
      android:layout_width="wrap_content" /> 
</android.support.v7.widget.Toolbar> 
item_list.xml

問題は、これらの項目のオーバーフローメニューを表示することです。しかし、私は主なツールバーについてコメントしたと思うので、表示されません。メインアクティビティツールバーではなく、リストビュー項目を表示するためにオーバーフローメニューを取得するにはどうすればよいですか? (InstagramのListViewを見てください。各ListView項目にはフライアウトメニューがあります)。

+0

https://stackoverflow.com/questions/23538929/android-menuitem-custom-layout – Donato

答えて

0

これを達成するためにToolbarを使用する必要はありません。ツールバーは繰り返し可能なリスト項目として使用するようには設計されていません。

PopupMenuを使用すると、探している効果を得ることができます。

PopupMenuは、任意の特定のビューをメニューに添付するために使用できます。だから、中にあなたitem_list.xmlツールバーを削除し、ちょうどメニュー

<LinearLayout> 
    <ImageView 
      android:id="@+id/usericon" 
      android:layout_height="wrap_content" 
      android:layout_width="wrap_content" /> 
    <TextView 
      android:id="@+id/username" 
      android:layout_height="wrap_content" 
      android:layout_width="wrap_content" /> 

    <ImageButton 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/ic_overflow_holo_dark" 
      android:contentDescription="@string/descr_overflow_button" 
      android:id="@+id/overflow_menu" /> 
    </LinearLayout> 

imageButton = findViewById(R.id.overflow_menu); 
PopupMenu popup = new PopupMenu(this, imageButton); 
MenuInflater inflater = popup.getMenuInflater(); 
inflater.inflate(R.menu.actions, popup.getMenu()); 

次はImageButtonOnClickListenerを添付して、その中popup.show()を呼び出してポップアップメニューの作成を示すために、ImageButtonと、通常のレイアウトを作成。

+0

デフォルトでは@ drawable/ic_overflow_holo_darkと@ string/descr_overflow_buttonはデフォルトですか?彼らは私のシステムにあるようには見えません(シンボルを解決できません)。 – Donato

+0

'ic_overflow ***'はオーバーフローアイコンの描画可能なリソースで、 'contentDescription'はアクセシビリティのためのものです。 xmlは参照実装であるため、名前が正しくない可能性があります – akash93

+1

ここには[material icon resource](https://material.io/icons/#ic_more_vert)を使用できます。 – akash93

関連する問題