在EditText和TextView android中自动调整文本

时间:2013-11-21 18:40:33

标签: android text textview android-edittext autosize

我希望我的英语不是太糟糕。 我花了一整天时间寻找解决方案,现在我想和你分享一下:

for (int i=3;i<500;i++){

    String finalVal ="0"; //I used a number but is the same for chart
    Paint paint = new Paint();
    paint.setTextSize(i);
    paint.setTypeface(Typeface.SANS_SERIF); //if you use a particular font
    paint.setColor(Color.BLACK);
    paint.setStyle(Paint.Style.FILL);

    Rect result = new Rect();
    paint.getTextBounds(finalVal, 0, finalVal.length(), result);

    Resources r = getResources();
    float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, result.height(), r.getDisplayMetrics());

    if (px>et_no_perc.getHeight()){
       EditText.setTextSize(TypedValue.COMPLEX_UNIT_PX ,i-1);
    break;      
    }
}

我希望它有用!

2 个答案:

答案 0 :(得分:0)

自动调整TextViewEditText中的文字现已成为Android 8.0(API级别26)的标准配置。查看官方documentation

答案 1 :(得分:-2)

        <EditText
        android:id="@+id/send_message_text"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginRight="5dp"
        android:layout_marginTop="3dp"
        android:hint="@string/type_text_message"
        android:inputType="textMultiLine"

        android:maxLines="10"
        android:minLines="1"
        android:scrollbars="vertical"
        android:gravity="top|left"
         android:layout_weight="1"
       />