Android textView 大小大于动态创建的

Android textView size is bigger than dynamically created one

我在使用动态创建的 TextView 时遇到了一些问题。更具体地说:

                    <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Some text"
                    android:textColor="@color/black"
                    android:textSize="30px" />

看起来比:

大得多
            TextView prName = new TextView(this);
            prName.setTextColor(getResources().getColor(R.color.black));
            prName.setText("Some text");
            prName.setTextSize(TypedValue.COMPLEX_UNIT_PX, 30);

如何使它们相等?预先感谢

删除这一行:

prName.setTextSize(TypedValue.COMPLEX_UNIT_PX, 30);

...或者改用这个:

prName.setTextSize(30);

对于文本,您应该使用比例点 (SP) 而不是像素。

对于xml:

 android:textSize="30sp"

代码:

 prName.setTextSize(TypedValue.COMPLEX_UNIT_SP, 30);

将文本视图的高度和宽度设置为 wrap_content。

LinearLayout.LayoutParams Params1 = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
prName.setLayoutParams(Params1);

确保当您为任何类型的视图设置 TextSize 时,您应该将其设置为可缩放点 (sp) 而不是像这样的像素 (px):

在xml中:

android:textSize="18sp"

代码中:

prName.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18);

使用可缩放点将使您的 TextView 文本大小在所有设备上都相等,而使用像素将使您的 TextView 文本大小在不同分辨率的设备上不相等。

使用setTextSize(int unit, float size)

TypedValue.COMPLEX_UNIT_PX   //Pixels

TypedValue.COMPLEX_UNIT_SP   //Scaled Pixels

TypedValue.COMPLEX_UNIT_DIP  //Device Independent Pixels

这里只设置

prName.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18);