多次使用时,TypeFace不起作用

时间:2017-11-22 12:44:29

标签: android

我的设计:

enter image description here

看下面我的安卓代码:

 # ...
 step Model(User, :create)
 step Policy::Pundit(User::Policy, :create?)
 step Contract::Build()
 step Contract::Validate(representer: User::Representer::In::Default)
 step :set_person
 # ...

 def set_person(options, **)
   person = Person.find(options['contract.default'].person.id)
   options['contract.default'].person = person
 end

当我点击更改字体时,它可以工作,但是我点击将字体样式更改为粗体斜体,它返回默认字体:(更改字体与微调器onCreate和Change字体样式,复选框在onCreate之外。选中是Checkbox的onClick事件。

3 个答案:

答案 0 :(得分:0)

这种情况正在发生,因为您正在选择字体或字体的每种类型,您要在视图中添加新类型的面。请尝试下面的代码

textview.setTypeface(textview.getTypeface(), Typeface.BOLD);

当您更改文本样式时,还会获取textview的当前类型并使用新类型face进行传递。希望能回答这个问题。

答案 1 :(得分:0)

请试试这个..

protected void Checked(View v){
        CheckBox checkBox = (CheckBox)v;
        if(checkBox.isChecked()) {
            Typeface bold_Typeface = Typeface.defaultFromStyle(Typeface.BOLD);
            editText.setTypeface(bold_Typeface);
        } else {
            Typeface bold_Italic_Typeface = Typeface.defaultFromStyle(Typeface.NORMAL);
        editText.setTypeface(bold_Italic_Typeface);
        }
    }

答案 2 :(得分:0)

请参阅setTypeface方法的定义。如果你没有传递字体(字体),它会将默认值应用于它。样式基本上是你想要的粗体,斜体的textStyle。因此,在设置样式时,您还应该按照上面的建议传递字体字体。

fetchKeysAppPreferences(){
  this.appPreferences.fetch("key1").then(
    (res) => {
        this.key.push(JSON.parse(res));
        console.log(this.key); //is definded
      }
   );
   console.log(this.key); // undefined
}

所以你应该尝试代码:

public void setTypeface(Typeface tf, int style) {
        if (style > 0) {
            if (tf == null) {
                tf = Typeface.defaultFromStyle(style);
            } else {
                tf = Typeface.create(tf, style);
            }
}