Tengo una vista de texto en mi diseño. Mi requisito es que cuando lo presiono o lo enfoque, el texto debe ser negrita. De lo contrario, debería ser con la fuente normal. ¿Cómo puedo implementarlo?Android cómo hacer que el texto de TextView sea negrita cuando se presiona o se enfoca
7
A
Respuesta
12
Uso continuación Código
TextView name=((TextView)findViewById(R.id.TextView01));
name.hasFocus();
name.setOnFocusChangeListener(new View.OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
// TODO Auto-generated method stub
if(hasFocus)
((TextView)findViewById(R.id.TextView01)).setTypeface(Typeface.DEFAULT_BOLD);
else
((TextView)findViewById(R.id.TextView01)).setTypeface(Typeface.DEFAULT);
}
});
name.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
((TextView)findViewById(R.id.TextView01)).setTypeface(Typeface.DEFAULT_BOLD);
return false;
} });
1
De hecho, he creado una clase pequeña para que esto sea mucho más fácil: ClickTextView. Puedes copiarlo y pegarlo en tu proyecto y Android Studio debería arreglarlo.
public class ClickTextView extends android.support.v7.widget.AppCompatTextView {
Rect rect;
public ClickTextView(Context context) {
super(context);
init();
}
public ClickTextView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public ClickTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init(){
setClickable(true);
rect = new Rect();
}
@Override
public boolean onTouchEvent(MotionEvent event) {
int action = event.getAction();
if (action == MotionEvent.ACTION_DOWN
|| action == MotionEvent.ACTION_HOVER_ENTER){
this.setTypeface(Typeface.DEFAULT_BOLD);
getHitRect(rect);
}else if (action == MotionEvent.ACTION_MOVE){
boolean inView = rect.contains(getLeft() + (int) event.getX(), getTop() + (int) event.getY());
this.setTypeface(inView ? Typeface.DEFAULT_BOLD : Typeface.DEFAULT);
}else if (action == MotionEvent.ACTION_UP
|| action == MotionEvent.ACTION_CANCEL
|| action == MotionEvent.ACTION_HOVER_EXIT
|| action == MotionEvent.ACTION_OUTSIDE) {
this.setTypeface(Typeface.DEFAULT);
}
return super.onTouchEvent(event);
}
@Override
protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
super.onFocusChanged(focused, direction, previouslyFocusedRect);
if (focused) this.setTypeface(Typeface.DEFAULT_BOLD);
else this.setTypeface(Typeface.DEFAULT);
}
}
También proporciona una solución para el caso de que un usuario hace clic en su vista, pero arrastra su dedo fuera de la vista límites. Si se publica allí, Android no registrará un clic, por lo que el texto tampoco debe aparecer en negrita.
Siéntase libre de utilizarlo donde lo desee.
Cuestiones relacionadas
- 1. Android cómo hacer que el texto del botón sea negrita cuando se presiona o se enfoca
- 2. Android: cambie TextView textColor cuando se enfoca al padre
- 3. Cómo hacer que el texto sea negrita usando jquery
- 4. ¿Cómo se cambia el texto a negrita en Android?
- 5. ¿Cómo resaltar ImageView cuando se enfoca o se hace clic?
- 6. cambiar el color del botón de texto cuando se presiona
- 7. ¿Cómo hacer que el elemento no pierda el foco cuando se presiona el botón?
- 8. Android TextView El texto no se ajusta
- 9. hacer que el texto de UILabel negrita
- 10. Mostrar el menú contextual cuando se presiona largamente el enlace en TextView
- 11. Resalta un control WPF cuando se enfoca
- 12. ¿Cómo hacer que el texto coincidente sea negrita con jquery ui autocompletar?
- 13. Aumenta continuamente el valor entero cuando se presiona el botón
- 14. Evitar que safari móvil se desplace por la página cuando se enfoca en texto
- 15. El texto de Android TextView no se centrará
- 16. ¿Cómo hacer que mi fuente sea negrita usando css?
- 17. Haga que la porción de un texto sea negrita en una Etiqueta o Texto JavaFx
- 18. Repita una acción cuando se presiona el botón largo
- 19. ¿Cambiar el color de TextView que se puede hacer clic en el foco y hacer clic?
- 20. ¿Cómo seleccionar todo el texto en un JFormattedTextField cuando se enfoca?
- 21. Evento cuando una página web se enfoca
- 22. Hacer texto en negrita y cursiva
- 23. Cuadro de texto WPF que solo actualiza el enlace cuando se presiona enter
- 24. ¿Cómo hacer que el texto de la línea datagridview esté en negrita cuando elijo una fila?
- 25. ¿Cómo hacer textView redondeado en Android?
- 26. ¿Cómo hacer que el texto se desvanezca dentro y fuera de Android?
- 27. ¿Cómo recibir notificaciones cuando una ventana se enfoca en WPF?
- 28. ¿Cómo configurar una parte del texto en negrita cuando se usa AlertDialog.setMessage() en Android?
- 29. Cómo configurar Visual Studio para que siempre se genere y se depure cuando se presiona F5?
- 30. Enviar formulario cuando se presiona Entrar
Cuando doy el código de esta manera, el texto se vuelve en negrita. Pero, ¿cómo puedo eliminar mi enfoque después de hacerlo en negrita? De hecho, al hacer clic en esa vista de texto, llamo al correo electrónico. Si presiono el botón Atrás del dispositivo, este valor en negrita debería ser del estilo normal. ¿Cómo puedo hacer eso? – Mathew
Hola, lo hice funcionar. Solo di una parte del código de setOnTouchListener. Mi código de intención de correo electrónico fue escrito dentro de otro método. Ahí di la fuente predeterminada. Por lo tanto, cumplió mi requisito. Gracias por la ayuda. – Mathew