如何在 Android 中不使用 XML 的情况下以编程方式动态应用 FontSize? [复制]
Posted
技术标签:
【中文标题】如何在 Android 中不使用 XML 的情况下以编程方式动态应用 FontSize? [复制]【英文标题】:How to apply FontSize dynamically and programmatically without using XML in Android? [duplicate] 【发布时间】:2012-09-24 05:50:54 【问题描述】:可能重复:How to change the Font Size in a whole Application programmatically, android?
这是我的代码:我创建了带有 FontSize 选项列表的 Spinner。如果我单击 FontSize“26”,那么它应该能够更改特定的 FontSize。下面我有一个编辑框。因此,如果我单击字体大小为 40 并且使用比通常粗体的斜体样式。所以我应该能够使用这个选定的“字体”在 EditBox 内输入:FontSize“40”和斜体样式。
如何在 Android 中以编程方式执行此操作?
font=new Spinner(con);
option= new String[] "Select Font Size","8","10","12","14","16","18","20",
"22","24","26","28","30","32","34","36","38","40","50";
ArrayAdapter<String> adapter= new ArrayAdapter<String>(con,android.R.layout.simple_spinner_dropdown_item,option);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
font.setOnItemSelectedListener(new OnItemSelectedListener()
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,int position, long id)
option[1]="8";
selectedItem= option[position];
@Override
public void onNothingSelected(AdapterView<?> arg0)
);
【问题讨论】:
不要费心阅读FAQ's eh?? 实际上,我想在全球范围内进行。它应该适用于整个应用程序。不是专门针对 EditText 单独的。甚至它应该能够在我的整个项目中应用它。但是完全不明白怎么办.. 【参考方案1】:改变
textSize 使用editText.setTextSize(20)
字体和样式使用editText.setTypeface(yourTypeFace, Typeface.BOLD)
更新
public class MyEditText extends EditText
public MyEditText(Context context)
super(context);
init();
public MyEditText(Context context, AttributeSet attrs, int defStyle)
super(context, attrs, defStyle);
init();
public MyEditText(Context context, AttributeSet attrs)
super(context, attrs);
init();
void init()
this.setTextSize(20);
this.setTypeface(yourTypeFace, Typeface.BOLD);
// method to change font settings
void setFont(TypeFace tf)
this.setTypeFace(tf);
//add whatever method you want
然后你使用这个类而不是使用EditText
,并且不要忘记在你的 XML 中使用
<yourpackage.MyEditText
android:layout_
android:layout_
... />
【讨论】:
这个我试过了,但我不需要这个。我的需要是完全应用它 嗯好的,那我猜你必须扩展所需的组件并添加方法来更改这些设置 是的,尝试了很多。但没有得到我真正需要的东西。 如何扩展所需的组件并添加方法来更改这些设置?你能推荐我吗? 我更新了我的答案。希望对你有帮助【参考方案2】:首先获取EditBox的id。 然后选择项目的位置。据此,您可以制作这样的公式:
public void onItemSelected(AdapterView<?> arg0, View arg1,int position, long id)
int p=(8+(pos*2));
editText.setTextSize(p);
【讨论】:
【参考方案3】:可能的解决方案是创建一个扩展 TextView 的基类,并将此文本视图类用作编辑文本。希望您在第一个屏幕上询问尺寸。在任何情况下,您都可以在基类中设置文本大小。这将解决您的问题。
就像你在 com.example 包中创建这个类,并且类名是 BaseTextView,然后在 xml 文件中而不是你会写
希望这会有所帮助。
【讨论】:
以上是关于如何在 Android 中不使用 XML 的情况下以编程方式动态应用 FontSize? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有代码的情况下隐藏 Android 布局 xml 中的部分可见视图?