android中Duo抽屉导航菜单的样式

android中Duo抽屉导航菜单的样式,android,navigation-drawer,Android,Navigation Drawer,我正在做一个android项目,我正在使用Duo导航抽屉。我无法更改菜单样式。我想更改字体类型并从列表中删除项目符号请参见下图 以下是我的主要活动 public class MainActivity extends AppCompatActivity implements DuoMenuView.OnMenuClickListener{ private MenuAdapter mMenuAdapter; private ViewHolder mViewHolder;

我正在做一个android项目,我正在使用Duo导航抽屉。我无法更改菜单样式。我想更改字体类型并从列表中删除项目符号请参见下图

以下是我的主要活动

public class MainActivity extends AppCompatActivity implements DuoMenuView.OnMenuClickListener{

    private MenuAdapter mMenuAdapter;
    private ViewHolder mViewHolder;
    boolean clickAgainToExit = false;
    Typeface custom_font;

    private ArrayList<String> mTitles = new ArrayList();
    private ArrayList<Integer> mTitlesIcon = new ArrayList();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        this.custom_font = AppUtils.getTypefaceblack(this);
        SetupDrawer();
    }

     private void SetupDrawer() {

        this.mTitles = new ArrayList(Arrays.asList(getResources().getStringArray(R.array.menuOptions)));

        this.mTitlesIcon = new ArrayList();
         this.mTitlesIcon.add(R.drawable.home);
        this.mTitlesIcon.add(R.drawable.add_bussiness);
        this.mTitlesIcon.add(R.drawable.news);
        this.mTitlesIcon.add(R.drawable.setting);
        this.mTitlesIcon.add(R.drawable.share_icon);

         // Initialize the views
        mViewHolder = new ViewHolder();

        // Handle toolbar actions
        handleToolbar();

        // Handle menu actions
        handleMenu();

        // Handle drawer actions
        handleDrawer();

        // Show main fragment in container
        goToFragment(new MainFragment(), false);
        this.mMenuAdapter.setViewSelected(0, true);
        setTitle(mTitles.get(0));

         View headerView = mViewHolder.mDuoMenuView.getHeaderView();

         TextView textView = (TextView) headerView.findViewById(R.id.user_name);
         textView.setTypeface(this.custom_font);
         TextView textView2 = (TextView) headerView.findViewById(R.id.app_name);
         textView2.setTypeface(this.custom_font);
         TextView textView3 = (TextView) headerView.findViewById(R.id.tvlocation);
         textView3.setSelected(true);
    }

    private void handleToolbar() {
        setSupportActionBar(mViewHolder.mToolbar);
    }

    private void handleDrawer() {
        DuoDrawerToggle duoDrawerToggle = new DuoDrawerToggle(this,
                mViewHolder.mDuoDrawerLayout,
                mViewHolder.mToolbar,
                R.string.navigation_drawer_open,
                R.string.navigation_drawer_close);

        mViewHolder.mDuoDrawerLayout.setDrawerListener(duoDrawerToggle);
        duoDrawerToggle.syncState();

    }

    private void handleMenu() {
        this.mMenuAdapter = new MenuAdapter(this.mTitles,this.mTitlesIcon);

        mViewHolder.mDuoMenuView.setOnMenuClickListener(this);
        mViewHolder.mDuoMenuView.setAdapter(mMenuAdapter);
    }

    @Override
    public void onFooterClicked() {
        Toast.makeText(this, "onFooterClicked", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onHeaderClicked() {
        Toast.makeText(this, "onHeaderClicked", Toast.LENGTH_SHORT).show();
    }

    private void goToFragment(Fragment fragment, boolean addToBackStack) {
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

        if (addToBackStack) {
            transaction.addToBackStack(null);
        }

        transaction.add(R.id.container, fragment).commit();
    }

    @Override
    public void onOptionClicked(int position, Object objectClicked) {
        // Set the toolbar title
        setTitle(mTitles.get(position));

        // Set the right options selected
        mMenuAdapter.setViewSelected(position, true);

        // Navigate to the right fragment
        switch (position) {
//            default:
//                goToFragment(new MainFragment(), false);
//                break;

            case 0:
                Toast.makeText(getApplicationContext(),"Home",Toast.LENGTH_LONG).show();
                break;
            case 1:
                Toast.makeText(getApplicationContext(),"Personal",Toast.LENGTH_LONG).show();
                break;
            case 2:
                Toast.makeText(getApplicationContext(),"News",Toast.LENGTH_LONG).show();
                break;
            case 3:
                Toast.makeText(getApplicationContext(),"Settings",Toast.LENGTH_LONG).show();
                break;
            case 4:
                Toast.makeText(getApplicationContext(),"About",Toast.LENGTH_LONG).show();
                break;
        }

        // Close the drawer
        mViewHolder.mDuoDrawerLayout.closeDrawer();
    }

    private class ViewHolder {
        private DuoDrawerLayout mDuoDrawerLayout;
        private DuoMenuView mDuoMenuView;
        private Toolbar mToolbar;

        ViewHolder() {
            mDuoDrawerLayout = findViewById(R.id.drawer);
            mDuoMenuView = (DuoMenuView) mDuoDrawerLayout.getMenuView();
            mToolbar = findViewById(R.id.toolbar);
        }
    }
}
公共类MainActivity扩展AppCompative实现DuoMenuView.OnMenuClickListener{
私有菜单适配器mMenuAdapter;
私人视窗持有人;
布尔clickAgainToExit=false;
字体自定义字体;
private ArrayList mTitles=新的ArrayList();
private ArrayList mTitlesIcon=new ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.custom\u font=AppUtils.getTypefaceblack(this);
SetupDrawer();
}
私有void SetupDrawer(){
this.mTitles=newArrayList(Arrays.asList(getResources().getStringArray(R.array.menuOptions));
this.mTitlesIcon=新的ArrayList();
这个.mTitlesIcon.add(R.drawable.home);
此.mTitlesIcon.add(R.drawable.add_business);
this.mTitlesIcon.add(R.drawable.news);
此.mTitlesIcon.add(R.drawable.setting);
this.mTitlesIcon.add(R.drawable.share_图标);
//初始化视图
mViewHolder=新的视图持有者();
//处理工具栏操作
handleToolbar();
//处理菜单操作
handleMenu();
//处理抽屉操作
handleDrawer();
//在容器中显示主片段
goToFragment(newmainfragment(),false);
此.mMenuAdapter.setViewSelected(0,true);
setTitle(mTitles.get(0));
View headerView=mViewHolder.mDuoMenuView.getHeaderView();
TextView TextView=(TextView)headerView.findViewById(R.id.user\u name);
textView.setTypeface(此.custom_字体);
TextView textView2=(TextView)headerView.findViewById(R.id.app_name);
textView2.setTypeface(此.custom_字体);
TextView textView3=(TextView)headerView.findViewById(R.id.tvlocation);
textView3.setSelected(true);
}
私有void handleToolbar(){
设置支持操作栏(mViewHolder.mToolbar);
}
私有无效handleDrawer(){
DuoDrawerToggle DuoDrawerToggle=新的DuoDrawerToggle(此,
mViewHolder.mDuoDrawerLayout,
mViewHolder.mToolbar,
R.string.navigation\u抽屉\u打开,
R.string.navigation\u drawer\u close);
mViewHolder.mDuoDrawerLayout.setDrawerListener(duoDrawerToggle);
duoDrawerToggle.syncState();
}
私有无效句柄菜单(){
this.mMenuAdapter=new MenuAdapter(this.mTitles,this.mTitlesIcon);
mViewHolder.mDuoMenuView.setOnMenuClickListener(此);
mViewHolder.mDuoMenuView.setAdapter(mMenuAdapter);
}
@凌驾
已单击页脚()上的公共void{
Toast.makeText(这是“onFooterClicked”,Toast.LENGTH_SHORT).show();
}
@凌驾
在HeaderClicked()上的公共空白{
Toast.makeText(这个“onHeaderClicked”,Toast.LENGTH_SHORT.show();
}
私有void goToFragment(片段片段,布尔addToBackStack){
FragmentTransaction=getSupportFragmentManager().beginTransaction();
if(addToBackStack){
transaction.addToBackStack(空);
}
add(R.id.container,fragment.commit();
}
@凌驾
公共void onOptionClicked(int位置,单击对象对象){
//设置工具栏标题
setTitle(mTitles.get(position));
//设置所选的正确选项
MMENUAAdapter.setViewSelected(位置,真);
//导航到正确的片段
开关(位置){
//默认值:
//goToFragment(newmainfragment(),false);
//中断;
案例0:
Toast.makeText(getApplicationContext(),“Home”,Toast.LENGTH_LONG.show();
打破
案例1:
Toast.makeText(getApplicationContext(),“Personal”,Toast.LENGTH_LONG.show();
打破
案例2:
Toast.makeText(getApplicationContext(),“News”,Toast.LENGTH_LONG.show();
打破
案例3:
Toast.makeText(getApplicationContext(),“Settings”,Toast.LENGTH_LONG.show();
打破
案例4:
Toast.makeText(getApplicationContext(),“About”,Toast.LENGTH_LONG.show();
打破
}
//关上抽屉
mViewHolder.mDuoDrawerLayout.closeDrawer();
}
私有类视窗持有者{
私人DuoDrawerLayout mDuoDrawerLayout;
私人多门努维-多门努维;
私有工具栏mToolbar;
视窗持有人(){
mDuoDrawerLayout=findViewById(R.id.drawer);
mDuoMenuView=(DuoMenuView)mDuoDrawerLayout.getMenuView();
mToolbar=findviewbyd(R.id.toolbar);
}
}
}
下面是我的菜单适配器

class MenuAdapter extends BaseAdapter {

    private ArrayList<View> mOptionViews = new ArrayList();
    private ArrayList<String> mOptions = new ArrayList();
    private ArrayList<Integer> mTitlesIcon = new ArrayList();

    @Override
    public long getItemId(int i) {
        return i;
    }

    public MenuAdapter(ArrayList<String> menuoptions, ArrayList<Integer> menuicons) {
        this.mOptions = menuoptions;
        this.mTitlesIcon = menuicons;
    }

    @Override
    public int getCount() {
        return this.mOptions.size();
    }

    @Override
    public Object getItem(int position) {
        return this.mOptions.get(position);
    }

    void setViewSelected(int position, boolean selected) {

        for (int i = 0; i < this.mOptionViews.size(); i++) {
            if (i == position) {
                ((DuoOptionView) this.mOptionViews.get(i)).setSelected(selected);
            } else {
                ((DuoOptionView) this.mOptionViews.get(i)).setSelected(!selected);
            }
        }
    }


    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        String str = (String) this.mOptions.get(i);

        i =((Integer) this.mTitlesIcon.get(i)).intValue();

        if(view == null){
            view = new DuoOptionView(viewGroup.getContext());
        }else{
            view = (DuoOptionView) view;
        }

        ((DuoOptionView) view).bind(str,i);
        this.mOptionViews.add(view);
        return view;
    }
}
class MenuAdapter扩展了BaseAdapter{
private ArrayList mOptionViews=new ArrayList();
private ArrayList mOptions=new ArrayList();
private ArrayList mTitlesIcon=new ArrayList();
@凌驾
公共长getItemId(int i){
返回i;
}
公共菜单适配器(ArrayList菜单选项、ArrayList菜单项){
this.mOptions=菜单选项;
this.mTitlesIcon=menuicons;
}
@凌驾
public int getCount(){
返回此.mOptions.size();
}
@凌驾
公共对象getItem(int位置){
返回此.mOptions.get(位置);
}
void setViewSelected(int位置,布尔值已选定){
对于(int i=0;i(((TextView)((RelativeLayout)((RelativeLayout)optionView.getChildAt(0)).getChildAt(1)).getChildAt(1))).setTextColor(Color.BLACK);
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    final String option = mOptions.get(position);
    // Using the DuoOptionView to easily recreate the demo
    final DuoOptionView optionView;
    if (convertView == null) {
        optionView = new DuoOptionView(parent.getContext());
        optionView.getChildAt(0);
    } else {
        optionView = (DuoOptionView) convertView;


    }
    (((TextView)((RelativeLayout)((RelativeLayout)optionView.getChildAt(0)).getChildAt(1)).getChildAt(1))).setTextColor(Color.BLACK);
    // Using the DuoOptionView's default selectors
    optionView.bind(option, null, null);
    // Adding the views to an array list to handle view selection
    mOptionViews.add(optionView);

    return optionView;
}
optionView.bind(option, getDrawable(R.drawable.ic_icon), null);
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
    String str = (String) this.mOptions.get(i);

    i =((Integer) this.mTitlesIcon.get(i)).intValue();

    if(view == null){
        view = new DuoOptionView(viewGroup.getContext());
    }else{
        view = (DuoOptionView) view;
    }

    ((DuoOptionView) view).bind(str,i);
    this.mOptionViews.add(view);
    return view;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
    String str = (String) this.mOptions.get(i);

    i =((Integer) this.mTitlesIcon.get(i)).intValue();

    if(view == null){
        view = new DuoOptionView(viewGroup.getContext());
    }else{
        view = (DuoOptionView) view;
    }

    ((DuoOptionView) view).bind(str); // change is here
    this.mOptionViews.add(view);
    return view;
}
 // Using the DuoOptionView's default selectors
 optionView.bind(option, ContextCompat.getDrawable(context,
 android.R.drawable.ic_dialog_alert), null);
private void handleMenu() {
        mMenuAdapter = new MenuAdapter(mTitles, mTitlesIcon, this); //pass context
        mViewHolder.mDuoMenuView.setOnMenuClickListener(this);
        mViewHolder.mDuoMenuView.setAdapter(mMenuAdapter);
         }
  private Context mContext;

 public MenuAdapter(ArrayList<String> menuoptions, ArrayList<Integer>
 menuicons, Context context) {
         this.mOptions = menuoptions;
         this.mTitlesIcon = menuicons;
        this.mContext = context;
     }
@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        final String option = mOptions.get(position);
        //Log.d("TAG", position+";");
     
        final DuoOptionView optionView;
        if (convertView == null) {
            optionView = new DuoOptionView(parent.getContext());
            optionView.getChildAt(0);
        } else {
            optionView = (DuoOptionView) convertView;
        }
        optionView.bind(option, context.getResources().getDrawable(mTitlesIcon.get(position)));
        // Adding the views to an array list to handle view selection
        mOptionViews.add(optionView);
        return optionView;
    }
@Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        String str = (String) this.mOptions.get(i);

        i =((Integer) this.mTitlesIcon.get(i)).intValue();

        if(view == null){
            view = new DuoOptionView(viewGroup.getContext());
        }else{
            view = (DuoOptionView) view;
        }
        optionView.setSelectorEnabled(false);

        ((DuoOptionView) view).bind(str,i);
        this.mOptionViews.add(view);
        return view;
    }