将文本大小设置为动态创建的EditText小部件可为不同的Android屏幕生成不同的大小

时间:2014-04-01 14:10:11

标签: android

我按下“添加”按钮动态添加EditText。我已经处理了小部件的动态创建并将它们添加到现有的xml布局中。但问题在于文字大小。我在xml布局中使用15 SP,并希望为动态创建的大小保持相同的大小。

我已应用以下代码动态计算文字大小:

int txtSize = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 15, getResources().getDisplayMetrics());
EditText child = new EditText(MyActivity.this); 
child.setTextSize(txtSize);

尽管我使用了缩放像素,但它没有产生预期的结果,文字大小因屏幕尺寸的不同而有所不同。

请帮忙......

3 个答案:

答案 0 :(得分:0)

这是一种方法:

  1. 定义替代"风格"具有不同屏幕尺寸的设备的资源。

    • 创建res / values-sw480dp和res / values-sw720dp文件夹(假设您需要处理480和720像素的屏幕宽度)
    • 在具有不同屏幕尺寸的每个资源文件夹中添加styles.xml
    • styles.xml包含如下样式:

    <style name="DetailText"> <item name="android:textColor">@color/detail_text_color</item> <item name="android:textStyle">bold</item> <item name="android:textSize">22sp</item> </style>

  2. 在代码中添加逻辑以从样式文件中检索文本大小。此链接显示如何在样式文件中检索属性的valute:How to retrieve style attributes programmatically from styles.xml

答案 1 :(得分:0)

尝试:

int textSize = 15;
EditText child = new EditText(MyActivity.this); 
child.setTextSize(Android.Util.ComplexUnitType.Sp, textSize);

答案 2 :(得分:0)

只需编写此代码

EditText child = new EditText(MyActivity.this); 
child.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);

参考

http://developer.android.com/reference/android/util/TypedValue.html#COMPLEX_UNIT_SP