Android TextView大小在不同的屏幕尺寸

时间:2016-01-14 04:00:03

标签: android

我已经在很长一段时间内搜索了如何设置不同屏幕大小的文本视图大小,我仍然无法获得解决方案。

我已经尝试将其设置为' dp'或者' sp',但不同屏幕尺寸的尺寸仍然不同。

我也尝试使用下面的代码来改变大小,但结果仍然是错误的。

final float scale = getResources().getDisplayMetrics().density;
textview = (int) (mysize * scale + 0.5f);

我可以用任何其他方式确保比例在任何屏幕尺寸都正确吗?

谢谢。

4 个答案:

答案 0 :(得分:1)

我已经尝试将其设置为'dp'或'sp'。您必须使用sp

您可以使用此逻辑

  

DisplayMetrics:描述有关a的一般信息的结构   显示,例如其大小,密度和字体缩放。

   DisplayMetrics metrics = getResources().getDisplayMetrics();

   int DeviceTotalWidth = metrics.widthPixels;
   int DeviceTotalHeight = metrics.heightPixels;

   TextViewObj.setTextSize(DeviceTotalWidth/8); // As per your Requirement 

您可以查看 How to change TextView font size in android

答案 1 :(得分:0)

您最好在维持比率时使用权重。它可以在不考虑屏幕尺寸方向的情况下工作。例如,请参阅下面的布局xml代码。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"/>

        <TextView
            android:layout_width="0dp"
            android:layout_height="40dp"
            android:layout_weight="2"
            android:background="@color/white"/>

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"/>

        <TextView
            android:layout_width="0dp"
            android:layout_height="40dp"
            android:layout_weight="2"
            android:background="@color/white"/>

    </LinearLayout>


</LinearLayout>

此代码的布局如下。

enter image description here

在那里,文本视图和线性布局中的比例在每个屏幕尺寸和两个方向上是相同的。你在android developer site也有一个非常好的例子。猜猜这是你要问的。

答案 2 :(得分:0)

您可以将TextView的 textAppearance 设置为大,中或小。这些样式适用于appcompat lib,

        <TextView
            android:id="@+id/tv_title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center|left"
            android:text="Grass cutting"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textColor="@color/red"
            android:textStyle="bold" />

文字大小将根据设备设置。

答案 3 :(得分:0)

我发现了同样的问题,发现了一些棘手的解决方案。实际上我们可以在Android内部找到这个比例。很可能你知道我们可以定义小,中,大文本视图。具有不同屏幕尺寸的不同设备对于这些文本视图具有不同的值。

您所要做的就是创建临时textview并获取其大小。现在你有了你正在寻找的比例。就试一试吧。真的行。

这是一个示例代码

TextView tempSmallText = new TextView(getApplicationContext());
tempSmallText.setTextAppearance(getApplicationContext(),android.R.style.TextAppearance_Small);

int smallSize=tempSmallText.getTextSize(); // return text size in pixels 

//now you have the ratio for small text views, just like you can get large if you want

int mySmallTextSize = smallSize*2; // if your small text size is wanted to be twice as the standard size

//apply to your textview
myTextView.setTextSize(TypedValue.COMPLEX_UNIT_PX , mySmallTextSize );  // don't forget to put TypedValue.COMPLEX_UNIT_PX. don't just use myTextView.setTextSize(mySmallTextSize );

希望这有帮助