在TextView中更改textSize

时间:2017-12-27 18:38:10

标签: java android android-layout text-size

在下面这个代码来自android studio上的android应用程序,我有一个LinearLayout,其中包含一个TextView,其大小我要更改,例如说从100到20.但事情是,每当我更改 android :textSize =" 100.0dip" 到任何其他号码,在我的手机上运行时,应用程序的大小仍保持不变。

代码:

<ScrollView
    android:id="@id/qp_body_wrapper"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_above="@id/widget34"
    android:layout_below="@id/widget99"
    android:layout_marginBottom="5.0dip"
    android:layout_marginTop="10.0dip"
    android:clickable="true"
    android:focusable="true"
    android:foregroundGravity="right">

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@id/qp_body_wrapper_container"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:clickable="true"
        android:focusable="true"
        android:orientation="vertical">

        <TextView
            android:id="@id/qp_body"
            style="@style/QuoteViewText"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/dashboard_qod_bg"
            android:clickable="true"
            android:focusable="true"
            android:gravity="right"
            android:padding="10.0dip"
            android:textAlignment="viewEnd"
            android:textColor="#FFFFFF"
            android:textSize="100.0dip"
            tools:ignore="RtlCompat,RtlHardcoded" />
    </LinearLayout>
</ScrollView>

这里是QuoteViewText样式:

<style name="QuoteViewText">
        <item name="android:textSize">100.0dip</item>
        <item name="android:typeface">serif</item>
        <item name="android:textStyle">bold</item>
        <item name="android:textColor">#fffcfcfc</item>
        <item name="android:shadowColor">#ff102e46</item>
        <item name="android:shadowDx">0.0</item>
        <item name="android:shadowDy">1.0</item>
        <item name="android:shadowRadius">2.0</item>
    </style>

5 个答案:

答案 0 :(得分:0)

您正在应用样式设置textview size 2次,为textview应用textsize设置另一个。使用任何一个。对于文本,使用sp而不是dp来尊重用户首选项。

答案 1 :(得分:0)

文字大小以sp - 与比例无关的像素来衡量。

所以,在你的情况下你应该使用

<item name="android:textSize">100sp</item>

而不是

<item name="android:textSize">100.0dip</item>

另外,请不要忘记您的布局中的属性会覆盖该样式,在这种情况下,您应该从android:textSize中删除TextView并将其保留为样式。此外,您应该从10的文本大小开始,100是大到未使用。

答案 2 :(得分:0)

您正在使用 dip ,而 textSize sp

您可以使用以下文件更新您的代码文件,它将解决您的问题

<ScrollView
    android:id="@id/qp_body_wrapper"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_above="@id/widget34"
    android:layout_below="@id/widget99"
    android:layout_marginBottom="5.0dip"
    android:layout_marginTop="10dp"
    android:clickable="true"
    android:focusable="true"
    android:foregroundGravity="right">

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@id/qp_body_wrapper_container"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:clickable="true"
        android:focusable="true"
        android:orientation="vertical">

        <TextView
            android:id="@id/qp_body"
            style="@style/QuoteViewText"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/dashboard_qod_bg"
            android:clickable="true"
            android:focusable="true"
            android:gravity="right"
            android:padding="10dpp"
            android:textAlignment="viewEnd"
            android:textColor="#FFFFFF"
            tools:ignore="RtlCompat,RtlHardcoded" />
    </LinearLayout>
</ScrollView>

这里是QuoteViewText样式:

 <style name="QuoteViewText">
            <item name="android:textSize">100sp</item>
            <item name="android:typeface">serif</item>
            <item name="android:textStyle">bold</item>
            <item name="android:textColor">#fffcfcfc</item>
            <item name="android:shadowColor">#ff102e46</item>
            <item name="android:shadowDx">0.0</item>
            <item name="android:shadowDy">1.0</item>
            <item name="android:shadowRadius">2.0</item>
        </style>

答案 3 :(得分:0)

提示:使用dimens.xml存储您的具体值,以便更轻松,更清晰地进行代码管理。

除了从dip更改为sp以及textSize的多余双重设置外,您的TextView代码也没有问题,它应该可以正常工作。还有其他一些小问题,可能使用@+id/qp_body而不是使用match_parent而不是弃用的fill_parent,但它仍然可以正常工作。

这是在黑暗中拍摄,但检查,如果你不是以某种方式在代码中以编程方式覆盖值。如果没有,你总是可以尝试看看会发生什么:

TextView mTextView = (TextView) findViewById(R.id.qp_body);
mTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20f);

或使用维度资源:

TextView mTextView = (TextView) findViewById(R.id.qp_body);
mTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, getResources().getDimension(R.dimen.my_text_size));

答案 4 :(得分:0)

你在textize中使用 dip ,而不只是使用 dp sp .dp和sp两者都可以正常工作,但通常在textview中,我们使用 sp