Android如何使TextView文字在按下或聚焦时变为粗体

我在我的布局中有一个文本视图。 我的要求是当我按下或关注它,文本应该是大胆的。 否则它应该与正常的字体。 我怎样才能实现它?

Solutions Collecting From Web of "Android如何使TextView文字在按下或聚焦时变为粗体"

使用下面的代码

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; 

}});

我实际上创build了一个小类,使这个更容易: ClickTextView 。 你可以复制粘贴到你的项目,Android Studio应该修复它。

 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); } } 

它还为用户点击您的视图提供了一个解决scheme,但是将他的手指拖到视图范围之外。 如果在那里发布,Android不会注册点击,所以文本也不应该是粗体的。

随时随地使用它,无论你喜欢。