ActionProvider
に視覚的に似た、並べ替え用のサブメニューを表示するために使用するカスタムを作成しましたShareActionProvider
。アクション ビューは期待どおりに表示されますが、アイコンをクリックしてもサブメニューが表示されず、視覚的なフィードバック (押された状態) もまったく表示されません。下位互換性アクション バーのサポート v7 ライブラリを使用しています。メニューを表示するために欠けている実装はありますか?
アクションプロバイダー:
public class SortActionProvider extends ActionProvider implements OnMenuItemClickListener {
private Context mContext;
public SortActionProvider(Context context) {
super(context);
mContext = context;
}
@Override
public View onCreateActionView(){
ImageView imageView = new ImageView(mContext);
imageView.setImageResource(R.drawable.ic_action_sort_by_size);
return imageView;
}
@Override
public boolean hasSubMenu(){
return true;
}
@Override
public void onPrepareSubMenu(SubMenu subMenu){
subMenu.clear();
subMenu.add("Sort by name").setOnMenuItemClickListener(this);
subMenu.add("Sort by type").setOnMenuItemClickListener(this);
}
@Override
public boolean onMenuItemClick(MenuItem item){
Toast.makeText(mContext, "I was clicked!", Toast.LENGTH_SHORT).show();
return true;
}
}
メニュー:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:support="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/menu_sort"
android:actionProviderClass="com.myapp.provider.SortActionProvider"
android:showAsAction="always"
android:title="@string/sort"
support:actionProviderClass="com.myapp.provider.SortActionProvider"
support:showAsAction="always"/>
</menu>