我的设计:
看下面我的安卓代码:
# ...
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事件。
答案 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);
}
}