Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将文本大小设置为动态创建的EditText小部件会为不同的android屏幕生成不同的大小_Android - Fatal编程技术网

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

将文本大小设置为动态创建的EditText小部件会为不同的android屏幕生成不同的大小,android,Android,我在按Add按钮时动态添加EditText。我已经处理了小部件的动态创建,并将它们添加到现有的xml布局中。但问题在于文本大小。我在xml布局中使用了15个SP,并且希望动态创建的布局也保持相同的大小 我已应用以下代码动态计算文本大小: int txtSize = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 15, getResources().getDisplayMetrics()); EditText child =

我在按Add按钮时动态添加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);
尽管我使用的是缩放像素,但它不能产生期望的结果,文本大小会根据不同的屏幕大小而变化


请帮助……这里有一种方法:

  • 为具有不同屏幕大小的设备定义替代“样式”资源

    • 创建res/values-sw480dp和res/values-sw720dp文件夹(假设需要处理屏幕宽度480和720像素)
    • 在每个资源文件夹中添加一个屏幕大小不同的styles.xml
    • styles.xml包含如下样式:
    
    @颜色/细节\u文本\u颜色
    大胆的
    22便士
    

    • 对于不同大小的屏幕,在样式文件中使用不同的textSize
    • 有关如何为不同大小的屏幕创建替代资源的详细信息,请使用此链接
  • 在代码中添加逻辑以从样式文件检索文本大小。此链接显示如何检索样式文件中属性的值:

  • 尝试:

    只要写下这段代码

    EditText child = new EditText(MyActivity.this); 
    child.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
    
    参考文献


    我正在研究C#这对我来说很有用,也许你需要对这段代码做一点修改才能在java上使用,但应该可以很好地工作。感谢Ivan Verges,这很有效,我将其替换为java语言“child.setTextSize(TypedValue.COMPLEX_UNIT_SP,15)”的代码。谢谢梅林的回答。事实上,上述解决方案对我有效。非常感谢你。
    EditText child = new EditText(MyActivity.this); 
    child.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);