Android按下或聚焦时如何使button文字加粗

当button被突出显示或按下时,我想将button内的文字改为粗体。 我目前使用一个XML文件来定义button,并使用XML来改变它看起来按下时,但我想这样做,而不使用图像。

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/reset_hover" /> <item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/reset_hover" /> <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/reset_hover" /> <item android:drawable="@drawable/reset" /> </selector> 

我尝试使用下面的东西,但似乎并没有被调用。

  final Button btn_reset = (Button) findViewById(R.id.btn_reset); btn_reset.setOnClickListener(this); btn_reset.setOn(new OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus){btn_reset.setTypeface(null, Typeface.BOLD);} else{btn_reset.setTypeface(null, Typeface.NORMAL);} } }); 

Solutions Collecting From Web of "Android按下或聚焦时如何使button文字加粗"

您可以创build自己的style.xml,在其中定义文本样式。 在你的select器中,你可以参考风格。 style.xml

 <style name="myStyle"> <item name="android:textSize">9px</item> <item name="android:gravity">center_horizontal</item> <item name="android:textColor">#fff</item> <item name="android:textStyle">bold</item> </style> 

并在您的select器

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_focused="true" android:state_pressed="false" style="@style/myStyle" /> </selector> 

您可以尝试将粗体代码放在button的单击事件中:

 final Button button = (Button) findViewById(R.id.button_id); button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // Set bold on click button.setTypeface(null, Typeface.BOLD); } }); 

样式不允许在select器中。 参考


为了使文字变粗,使用下面的代码:

 btn_reset.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { // When the user clicks the Button case MotionEvent.ACTION_DOWN: btn_reset.setTypeface(Typeface.DEFAULT_BOLD); break; // When the user releases the Button case MotionEvent.ACTION_UP: btn_reset.setTypeface(Typeface.DEFAULT); break; } return false; } });