Android TextView-以编程方式设置文本大小不会影响';好像不行

Android TextView-以编程方式设置文本大小不会影响';好像不行,android,Android,我正在使用EclipseIndigo,在2个模拟器(2.2和3.0)上进行测试 下面的代码显示了我现在正在测试的内容,但是当试图运行模拟器时,设置文本大小不会在屏幕上显示任何内容(如果我注释掉文本大小,文本将显示为红色)。我认为eclipse并没有重建代码,但我添加了一行代码来添加蓝色背景,这很有效。我尝试在设置文本后设置文本大小,但仍然没有成功。代码如下。谢谢你的帮助! (免责声明)-我试图远离xml。因为我已经知道java,所以我不想依赖它 import android.app.Activi

我正在使用EclipseIndigo,在2个模拟器(2.2和3.0)上进行测试

下面的代码显示了我现在正在测试的内容,但是当试图运行模拟器时,设置文本大小不会在屏幕上显示任何内容(如果我注释掉文本大小,文本将显示为红色)。我认为eclipse并没有重建代码,但我添加了一行代码来添加蓝色背景,这很有效。我尝试在设置文本后设置文本大小,但仍然没有成功。代码如下。谢谢你的帮助! (免责声明)-我试图远离xml。因为我已经知道java,所以我不想依赖它

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.TextView;

public class TestAndroidvs2Activity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    TextView text = new TextView(this);
    text.setTextColor(Color.RED);
    text.setTextSize(2);    
    text.setBackgroundColor(Color.BLUE);
    text.setText("Hello Android");


    setContentView(text);
  }
}
有关在代码中设置文本大小的更多信息,请参阅链接。基本上它说:

公共void setTextSize(整数单位,浮点大小)

因为:API级别1将默认文本大小设置为给定的单位,并且 价值有关可能的尺寸单位,请参见。相关XML 属性

android:textSize参数

单位-所需的尺寸单位
按给定单位调整所需大小


文本大小2实际上是不可见的。至少用14块试试。顺便说一句,使用xml有很多优点,一旦你需要做比“Hello World”更复杂的事情,你的生活就会更轻松。

方法
TextView.setTextSize(整数单位,浮点大小)接受两个参数

试试这个:

text.setTextSize(TypedValue.COMPLEX_UNIT_SP,14);
参考和

更新: 现在,
setTextSize(float size)
将以“
缩放像素”为单位自动设置文本大小。无需手动提及复杂的单元SP。

请参阅。

在我的案例中使用的方法

public static float pxFromDp(float dp, Context mContext) {
    return dp * mContext.getResources().getDisplayMetrics().density;
}
此处以编程方式设置文本视图的文本大小

textView.setTextSize(pxFromDp(18, YourActivity.this));

继续享受:)

这为我解决了这个问题。 我在所有设备上都有统一的字体大小

 textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,getResources().getDimension(R.dimen.font));

目前,
setTextSize(float size)
方法将运行良好
,因此我们不需要使用另一种方法来更改文本大小

android.widget.TextView.java源代码

/**
 * Set the default text size to the given value, interpreted as "scaled
 * pixel" units.  This size is adjusted based on the current density and
 * user font size preference.
 *
 * <p>Note: if this TextView has the auto-size feature enabled than this function is no-op.
 *
 * @param size The scaled pixel size.
 *
 * @attr ref android.R.styleable#TextView_textSize
 */
@android.view.RemotableViewMethod
public void setTextSize(float size) {
    setTextSize(TypedValue.COMPLEX_UNIT_SP, size);
}

在Kotlin中,你可以像这样使用


textview.textSize=20f

我刚刚在代码中双击了Eclipse,根据intellisense,我实际上有两个选项来设置xtSize、setTextSize(浮点大小)、setTextSize(整数单位、浮点大小)。你链接的文档证实了这一点。对-你试过了吗?尼古拉还说,2将是一个非常小的东西,也可以试着增加。是的,但问题是,当我试着用现在的方式来做时,文本甚至没有显示出来。它只是一个空白屏幕。即使2不明显,为什么屏幕是空白的?它不是空白的。如果仔细观察,可以看到红色的小像素:)。逐渐增加大小以查看。顺便说一句,setTextSize(float)相当于setTextSize(COMPLEX_UNIT_SP,float)。我将尝试使用14。正如我在第一篇文章中所说,即使2太小,也不应该让我的屏幕空白,是吗?我想我是把它当作一个超出文本的尺度来阅读,而不是简单地设置大小。-我会看一看,但我还是会问——默认尺寸是多少?无论如何,谢谢。顺便说一句-是的,我意识到xml可以有它的优点,但我对它没有任何经验。是的,我知道这很容易学。由于我已经熟悉java,我只是认为熟悉尽可能多的类会非常有用。似乎使用XML某种程度上对您隐藏了很多,但它并没有隐藏它——它是具有相同参数的相同类。需要一些时间才能在两者之间进行转换,但实际上相当有效。另外,如果您使用XML定义视图,系统将处理不同的屏幕大小、密度和方向,而无需更改代码,只需更改布局文件。您是否能够在运行时基于任意数量的因素更改布局和方向?这是一个非常广泛的问题,但简而言之,是的。即使用XML定义UI,也可以在运行时添加/删除视图。您还可以覆盖默认行为并自行处理方向更改。这是正确答案。更具体地说:
float myTextSize=TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,18F,context.getResources().getDisplayMetrics())
是R.dimen.font统一的数字还是不同设备有不同的大小?在我的例子中,我在这些文件夹中的dimen.xml文件中声明了字体:values,values-sw600dp,values-sw720dp和特定的值。奇怪的是,TextView在TextView之后消失了。setTextSize(R.dimen.text\u size\u max)调用,但使用您的方法,它是有效的。嗨@Dhruv Raval,我正在挑选能够在我的项目中调整字体大小的,如果这个值18对任何屏幕密度都有效,或者我应该为每个屏幕创建一个维度吗?链接到AOSP TextView源:
textView.setTextSize(20); // set your text size = 20sp