Elemento en negrita después de la selección

Ahora estoy usando el cajón de la navegación con los fragmentos y los artículos seleccionados resaltaron color rojo. I varita para utilizar el tipo de letra en negrilla para el artículo elegido en lugar de destacar. ¿Puede alguien decirme, cómo puedo realizar esto?

Actividad principal

public class MainActivity extends Activity { private DrawerLayout mDrawerLayout; private ListView mDrawerList; private ActionBarDrawerToggle mDrawerToggle; // nav drawer title private CharSequence mDrawerTitle; // used to store app title private CharSequence mTitle; // slide menu items private String[] navMenuTitles; private ArrayList<NavDrawerItem> navDrawerItems; private NavDrawerListAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTitle = mDrawerTitle = getTitle(); // load slide menu items navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mDrawerList = (ListView) findViewById(R.id.list_slidermenu); navDrawerItems = new ArrayList<NavDrawerItem>(); navDrawerItems.add(new NavDrawerItem(navMenuTitles[0])); navDrawerItems.add(new NavDrawerItem(navMenuTitles[1])); navDrawerItems.add(new NavDrawerItem(navMenuTitles[2])); mDrawerList.setOnItemClickListener(new SlideMenuClickListener()); // setting the nav drawer list adapter adapter = new NavDrawerListAdapter(getApplicationContext(),navDrawerItems); mDrawerList.setAdapter(adapter); // enabling action bar app icon and behaving it as toggle button getActionBar().setDisplayHomeAsUpEnabled(true); getActionBar().setHomeButtonEnabled(true); mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.ic_drawer_white, //nav menu toggle icon R.string.app_name, // nav drawer open - description for accessibility R.string.app_name // nav drawer close - description for accessibility ) { public void onDrawerClosed(View view) { getActionBar().setTitle(mTitle); // calling onPrepareOptionsMenu() to show action bar icons invalidateOptionsMenu(); } public void onDrawerOpened(View drawerView) { getActionBar().setTitle(mDrawerTitle); // calling onPrepareOptionsMenu() to hide action bar icons invalidateOptionsMenu(); } }; mDrawerLayout.setDrawerListener(mDrawerToggle); if (savedInstanceState == null) { displayView(0); } } private class SlideMenuClickListener implements ListView.OnItemClickListener { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { displayView(position); } } @Override public boolean onOptionsItemSelected(MenuItem item) { if (mDrawerToggle.onOptionsItemSelected(item)) { return true; } return super.onOptionsItemSelected(item); } @Override public boolean onPrepareOptionsMenu(Menu menu) { return super.onPrepareOptionsMenu(menu); } private void displayView(int position) { // update the main content by replacing fragments Fragment fragment = null; switch (position) { case 0: fragment = new MainFragment(); break; case 1: fragment = new TheoryFragment(); break; case 2: fragment = new SettingsFragment(); break; default: break; } if (fragment != null) { FragmentManager fragmentManager = getFragmentManager(); fragmentManager.beginTransaction() .replace(R.id.frame_container, fragment).commit(); mDrawerList.setItemChecked(position, true); mDrawerList.setSelection(position); setTitle(navMenuTitles[position]); mDrawerLayout.closeDrawer(mDrawerList); } else { Log.e("MainActivity", "Error in creating fragment"); } } @Override public void setTitle(CharSequence title) { mTitle = title; getActionBar().setTitle(mTitle); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); mDrawerToggle.syncState(); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); mDrawerToggle.onConfigurationChanged(newConfig); } 

DrawerAdapter

 public class NavDrawerListAdapter extends BaseAdapter { private Context context; private ArrayList<NavDrawerItem> navDrawerItems; public NavDrawerListAdapter(Context context, ArrayList<NavDrawerItem> navDrawerItems){ this.context = context; this.navDrawerItems = navDrawerItems; } @Override public int getCount() { return navDrawerItems.size(); } @Override public Object getItem(int position) { return navDrawerItems.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); convertView = mInflater.inflate(R.layout.drawer_list_item, null); } TextView txtTitle = (TextView) convertView.findViewById(R.id.title); txtTitle.setText(navDrawerItems.get(position).getTitle()); return convertView; } 

}

UPD: Entiendo cómo el elemento marcado en negrita, no se elimina al cambiar a un elemento diferente y no tiene un estilo en negrita desde el principio.

Código actualizado

 public void onItemClick(AdapterView<?> parent, View view, int position, long id) { View rowView = view; TextView tv = (TextView) rowView.findViewById(R.id.title); tv.setTypeface(null, Typeface.BOLD); displayView(position); } 

Aquí está mi solución completa …

 @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { setNavDrawerItemNormal(); TextView txtview = ((TextView) view.findViewById(R.id.txtNav)); txtview.setTypeface(null, Typeface.BOLD); } public void setNavDrawerItemNormal() { for (int i=0; i< mDrawerListView.getChildCount(); i++) { View v = mDrawerListView.getChildAt(i); TextView txtview = ((TextView) v.findViewById(R.id.txtNav)); Typeface font = Typeface.createFromAsset(getActivity().getAssets(), "fonts/Roboto-Light.ttf"); txtview.setTypeface(font); } } 

Y en negrita el primer elemento en el cajón de navegación tras la inicialización de la aplicación, lo hice en el adaptador de lista obtener método de vista …

 @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View rowView = inflater.inflate(R.layout.navdrawer_item, parent, false); TextView textView = (TextView) rowView.findViewById(R.id.txtNav); textView.setText(values[position]); if (position == 0) { textView.setTypeface(null, Typeface.BOLD); } return rowView; } 

Por lo tanto, aquí he comprobado si la posición del elemento es 0 (es decir, su primer elemento), a continuación, lo hacen en negrita. ¡Todo esto funciona perfectamente para mí! ~

En tu SlideMenuClickListeners onItemClick, establece todos los elementos en Typeface.DEFAULT y, a continuación, configura el elemento en el que te interesa Typeface.DEFAULT_BOLD :

 for (int i = 0; i < parent.getCount(); i++) { TextView v = (TextView)parent.getChildAt(i); if (v != null) v.setTypeface(Typeface.DEFAULT); } ((TextView)view).setTypeface(Typeface.DEFAULT_BOLD); 

Para eliminar el resaltado de la selección, elimine mDrawerList.setChecked y mDrawerList.setSelection en su método displayView

Sin embargo, tomar esta solución con un grano de sal porque estoy teniendo problemas para envalentonar el primer elemento después de la inicialización de la aplicación.

  • DrawerLayout se debe medir con MeasureSpec.EXACTLY error
  • Cómo crear mini-menú de cajones en Android?
  • El cajón de navegación no funciona en las versiones pre-ICS
  • Icono de Android ic_drawer.png en color blanco?
  • Incluyendo fila en la parte inferior del cajón de navegación
  • Determinar si el NavigationDrawer está abriendo o cerrando
  • Configurar el color de fondo del cajón de navegación
  • Cajón de navegación siempre visible (un poco)
  • Teclado de navegación oculta el teclado cuando onDrawerOpened
  • Cambiar el icono del cajón de nuevo a la flecha de retroceso
  • Cómo mostrar / ocultar el cajón de navegación mediante programación
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.