2016-07-21 6 views
0

私はすべての項目にオプションボタン付きのrecylerviewを持っています。ボタンをクリックすると、ポップアップメニューが表示されます。ポップアップメニューには、項目としてチェックボックスと削除ボタンがなければなりません。最初のメニュー項目はチェックボックスです。私は次のコードを使用しました。アンドロイドのチェック可能なメニュー項目のテキストの左側にチェックボックスアイコンを配置する方法は?

<?xml version="1.0" encoding="utf-8"?> 
<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" 
> 
<item 
    android:id="@+id/action_watch" 
    android:checkable="true" 
    android:title="Watch" 
    app:showAsAction="always" 
    /> 

<item 
    android:id="@+id/action_delete" 
    android:icon="@drawable/ic_action_delete" 
    android:title="Remove" 
    app:showAsAction="withText|always"/> 
</menu> 

問題はテキストの右側に表示されます。私はそれを左にしたいが、私はできない。助けてください。 TIA

+0

を私はあなたがそれを変更する必要があることはないと思う - それは、標準のメニュー – Divers

+0

@WadeWilsonの質問をお読みください - '問題は、チェックボックスがそのテキストの右側に表示されています。私はそれを左にしたいが、私はできない。助けてください」 – Divers

答えて

1

私は方法を見つけました。もし誰かが必要であれば、私は答えとしてそれを与えています。まず、そのメニュー項目のアイコンとして未チェックのチェックボックスを設定します。

<?xml version="1.0" encoding="utf-8"?> 
<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" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" > 
    <item 
     android:id="@+id/action_checkable" 
     android:title="Check" 
     app:showAsAction="always" 
     android:icon="@drawable/ic_unchecked_checkbox" /> 
</menu> 

はその後強制的にこれを使用して、メニューアイコンやタイトルを表示:

try { 
    Class<?> classPopupMenu = Class.forName(popupMenu.getClass().getName()); 
    Field mPopup = classPopupMenu.getDeclaredField("mPopup"); 
    mPopup.setAccessible(true); 
    Object menuPopupHelper = mPopup.get(popupMenu); 
    Class<?> classPopupHelper = Class.forName(menuPopupHelper 
       .getClass().getName()); 
    Method setForceIcons = classPopupHelper.getMethod("setForceShowIcon", boolean.class); 
    setForceIcons.invoke(menuPopupHelper, true); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

そのアイコンをクリックしながら、メニューのアイコンや色を変更します。ブール値isSelectedを使用してチェック状態を追跡します。アイコンを変更し、それがこの使用色です:

if(isSelected) { 
    MenuItem checkable = (MenuItem) popupMenu.getMenu().findItem(R.id.action_checkable); 
    Drawable checkableDrawable = getResources().getDrawable(R.drawable.ic_checked_checkbox); 
    checkableDrawable.setColorFilter(getResources().getColor(R.color.primaryColor), PorterDuff.Mode.SRC_ATOP); 
    checkable.setIcon(checkableDrawable); 
} 
1

左のセクションがすでにタイトルとアイコンに割り当てられているため、上記の方法ではできません。

ポップアップをチェックボックスで表示する場合は、アダプタを使用したチェックボックス付きのAlertdialogを使用できます。

または

ポップアップビューでlistviewを使用できます。

+0

タイトルとアイコンの左にチェックボックスを置くことは可能ですか? – ARiF

+0

申し訳ありませんが、メニューはありません – ViramP

+0

ありがとうございます、少なくとも私はそれが私がやりたいと思う方法ではないことを学びます。 – ARiF

関連する問題