0

NavigationView内のアイテムメニューのアイコンをTextDrawableとして設定しようとしています。textDrawable の場合、 TextDrawable ライブラリを使用していますが、メニュー項目のアイコンを設定すると、生成されたドローアブルではなく黒い円のみが表示されます。

NavigationView の外で TextDrawable を生成するコードを試してみましたが、必要に応じて表示されますが、メニュー項目のアイコンとして表示することはできません。

TexDrawable を生成するには:

private Drawable getLetterDrawable(String letter){
    return TextDrawable.builder()
            .beginConfig()
            .width(20)  // width in px
            .height(20) // height in px
            .endConfig()
            .buildRect(letter, Color.RED);
}

アイコンを設定するには:

        ...
        navigationView.inflateMenu(R.menu.menu_drawer_users);  
        Menu menu = navigationView.getMenu();
        menu.add("Item text here").setIcon(getLetterDrawable("A"));
        ...

そして、これは予想外の結果です:

実施結果

編集:アイコンとして 設定するとR.mipmap.ic_launcher、Androidアイコンだけでなく灰色でも表示されるため、その境界線しか表示されません。を使用すると、ドローアブルが「着色」されているようですmenuItem.setIcon()

私は次のことを試みましたが、成功しませんでした:

        MenuInflater mi = getMenuInflater();
        mi.inflate(R.menu.menu_drawer, menu);
        menu.add("Test");
        menu.getItem(0).setIcon(R.mipmap.ic_launcher);
        menu.getItem(0).getIcon().clearColorFilter();
        menu.getItem(0).getIcon().invalidateSelf();

質問:フィルタを削除してアイコンを色付きで表示するにはどうすればよいですか?

編集 2:提案の 後Andrea Basso、navigationView オブジェクトから色合いを削除することができましたが、正方形内の文字はまだ表示されません。赤い四角だけが見えますが、中に文字はありません。

主な問題は残っています: TextDrawableをアイコンとして配置する方法はMenuItem?

4

1 に答える 1