代码之家  ›  专栏  ›  技术社区  ›  stealthcopter

安卓如何使按钮文本粗体时按下或集中

  •  20
  • stealthcopter  · 技术社区  · 16 年前

    我想改变一个按钮内的文字是粗体时,按钮突出显示或按下。我目前使用一个xml文件来定义按钮,并使用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);}
        }
       });
    
    3 回复  |  直到 5 年前
        1
  •  4
  •   Henry    6 年前

    注意!请参阅下面的更新


    样式.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>
    

    在你的选择器里

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

    更新2020 :我的答案是10多年前的。它不工作了!

        2
  •  36
  •   DEzra    16 年前

    您可以尝试将粗体代码放在按钮的click事件中:

    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);
                 }
             });
    
        3
  •  1
  •   Faraz    8 年前

    Reference


    要使文本加粗,请使用以下代码:

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