androi...">
美文网首页
根据TextView长度,自动调节字体大小

根据TextView长度,自动调节字体大小

作者: 梅伤花逝 | 来源:发表于2019-01-22 11:21 被阅读0次

一、xml文件

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical"

    tools:context=".MainActivity">

        android:id="@+id/tv_test"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:padding="10dp"

        android:text="test"

        android:textColor="@color/colorAccent"

        android:textSize="14sp" />

        android:id="@+id/btn_press"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:background="@drawable/selector_btn"

        android:text="text-length-change"

        android:textColor="@color/colorPrimary"

        android:textSize="13sp" />

</LinearLayout>

二、selector_btn

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="false">

        <shape android:shape="rectangle">

            <size android:width="20dp" android:height="20dp" />

            <corners android:radius="5dp" />

            <padding android:bottom="5dp" android:left="5dp" android:right="5dp" android:top="5dp" />

            <stroke android:width="1dp" android:color="@android:color/holo_blue_bright" android:dashWidth="10dp" android:dashGap="2dp" />

            <gradient android:angle="0" android:endColor="@android:color/holo_orange_dark" android:startColor="@android:color/holo_orange_light" />

    <item android:state_pressed="true">

        <shape android:shape="rectangle">

            <size android:width="20dp" android:height="20dp" />

            <corners android:radius="5dp" />

            <padding android:bottom="5dp" android:left="5dp" android:right="5dp" android:top="5dp" />

            <stroke android:width="1dp" android:color="@android:color/holo_blue_bright" android:dashWidth="10dp" android:dashGap="2dp" />

            <gradient android:angle="0" android:endColor="@android:color/holo_orange_light" android:startColor="@android:color/holo_orange_dark" />

</selector>

三、代码

package lina.simple.com.testdemo;

import android.graphics.Paint;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.util.TypedValue;

import android.view.View;

import android.widget.Button;

import android.widget.TextView;

import java.util.Random;

public class MainActivityextends AppCompatActivityimplements View.OnClickListener {

private TextViewtvTest;

    private ButtonbtnPress;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        initView();

        initBase();

    }

private void initBase() {

}

private void textViewSet() {

tvTest.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);

        Paint mPaint =tvTest.getPaint();

        String text =tvTest.getText().toString();

        int width =tvTest.getMeasuredWidth();

        if (width >0) {

int realWidth = width -tvTest.getPaddingLeft() -tvTest.getPaddingRight();

            float trySize =tvTest.getTextSize();

            while (mPaint.measureText(text) > realWidth) {

trySize -=2;

                tvTest.setTextSize(TypedValue.COMPLEX_UNIT_PX, trySize);

            }

}

}

private void initView() {

tvTest = findViewById(R.id.tv_test);

        btnPress = findViewById(R.id.btn_press);

        btnPress.setOnClickListener(this);

    }

@Override

    public void onClick(View v) {

switch (v.getId()) {

case R.id.btn_press:

showText();

break;

        }

}

private void showText() {

Random mRandom =new Random();

        switch (mRandom.nextInt(3)) {

case 0:

tvTest.setText("文字长度1:textView自动调节文字大小");

break;

            case 1:

tvTest.setText("文字长度1:textView自动调节文字大小;文字长度1:textView自动调节文字大小;");

break;

            case 2:

tvTest.setText("文字长度1:textView自动调节文字大小;文字长度1:textView自动调节文字大小;文字长度1:textView自动调节文字大小;");

break;

        }

textViewSet();

    }

}

相关文章

网友评论

      本文标题:根据TextView长度,自动调节字体大小

      本文链接:https://www.haomeiwen.com/subject/zvkljqtx.html