NavigationDrawer RecyclerVer elementos seleccionados cambiar de color
Estoy intentando cambiar el textColor en mi NavigationDrawer cuando el artículo está seleccionado. Estoy utilizando RecyclerView como mi diseño del golpe. Esto se basa en el tutorial:
Android Getting Started with Material Design
- Diseño de la gaveta de navegación de Android
- Android Navigation Drawer y windowActionBarOverlay = true
- Suscribir un cajón de navegación a un Observable
- Cómo cambiar el color del texto y el icono del elemento de menú seleccionado en el Gaveta de navegación mediante programación utilizando java
- Cajón de navegación - Vista de cabecera con ListView
Cualquiera puede sugerir la solución
Gracias por adelantado.
- Ocultación de la barra de acción contextual mientras el cajón de navegación está abierto
- Cerrar el cajón de navegación después de abrir otra actividad
- mostrar el cajón de navegación en el botón del menú físico
- ¿Qué tamaños debe tener una imagen en un cajón de navegación?
- trasparent statusbar navigationdrawer después de setstatusbarcolor
- Evento antes de que DrawerLayout se abra
- Cambiar los colores de los elementos del menú Gavetas de navegación
- Cómo crear un cajón de navegación mediante Android Design Support Library?
Defina un int estático en la clase NavigationDrawerAdapter para representar el elemento seleccionado
En NavigationDrawerAdapter.java
public class NavigationDrawerAdapter extends RecyclerView.Adapter<NavigationDrawerAdapter.MyViewHolder> { public static int selected_item = 0; ... @Override public void onBindViewHolder(MyViewHolder holder, int position) { NavDrawerItem current = data.get(position); holder.title.setText(current.getTitle()); if(position == selected_item) { holder.title.setTextColor(Color.RED); } else { holder.title.setTextColor(Color.BLACK); } } ... }
En FragmentDrawer.java
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { ... recyclerView.addOnItemTouchListener(new RecyclerTouchListener(getActivity(), recyclerView, new ClickListener() { @Override public void onClick(View view, int position) { NavigationDrawerAdapter.selected_item = position; recyclerView.getAdapter().notifyDataSetChanged(); drawerListener.onDrawerItemSelected(view, position); mDrawerLayout.closeDrawer(containerView); } ... })); ... }
He descubierto, cómo cambiar el color del texto, así como el color de toda la vista.
He actualizado tu FragmentDrawer.java
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflating view layout View layout = inflater.inflate(R.layout.fragment_navigation_drawer, container, false); recyclerView = (RecyclerView) layout.findViewById(R.id.drawerList); adapter = new NavigationDrawerAdapter(getActivity(), getData()); recyclerView.setAdapter(adapter); recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); recyclerView.addOnItemTouchListener(new RecyclerTouchListener(getActivity(), recyclerView, new ClickListener() { @Override public void onClick(View view, int position) { view.setBackgroundColor(getResources().getColor(R.color.colorPrimary)); ((TextView) view.findViewById(R.id.title)).setTextColor(getResources().getColor(R.color.material_blue_grey_800)); drawerListener.onDrawerItemSelected(view, position); mDrawerLayout.closeDrawer(containerView); } @Override public void onLongClick(View view, int position) { } })); return layout; }
Lo que básicamente he hecho es, en el método onClick () de TouchListener.
view.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
Esto cambiará el color de fondo de la vista
Del mismo modo desde que he hecho referencia a la vista , podría obtener referencia a la TextView que se utiliza dentro de la disposición de cajón.
((TextView) view.findViewById(R.id.title)).setTextColor(getResources().getColor(R.color.material_blue_grey_800));
Puedes hacerlo:
public class MainActivity extends AppCompatActivity { ....... adapter.setOnItemClickLister(new MenuAdapter.OnItemSelecteListener() { View selectedView; @Override public void onItemSelected(View v, int position) { if(selectedView != null) selectedView.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.defaultColor)); v.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.orange)); selectedView = v; } }); }
- Anónimo Subir objeto de archivo a la API Imgur (JSON) da error de autenticación 401
- app falla cuando cambio el orden de mi XML RelativeLayout android