android中Duo抽屉导航菜单的样式
我正在做一个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;
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;
}