欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android之TextView自适应大小

程序员文章站 2023-12-15 22:53:16
对于设置textview的字体默认大小对于ui界面的好看程度是很重要的,小屏幕设置的文字过大或者大屏幕设置的文字过小都造成ui的不美观 现在就让我们学习自适应大小的tex...

对于设置textview的字体默认大小对于ui界面的好看程度是很重要的,小屏幕设置的文字过大或者大屏幕设置的文字过小都造成ui的不美观

现在就让我们学习自适应大小的textview控件,即当文字长度变化时,文字的大小会相应的变化,保证显示在一行当中

实现依靠于第三方类库

第三方类来源:

和正常的使用textview一样,只需要将要自适应的textview标签设置为<me.grantland.widget.autofittextview/>

注意:一定要设置为单行,否定无法显示效果

android:singleline="true"

<me.grantland.widget.autofittextview
   android:id="@+id/output_autofit"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:text="@string/example"
   android:textsize="50sp"
   android:gravity="center"
   android:singleline="true"
   autofit:mintextsize="8sp"
   />

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<scrollview xmlns:android="http://schemas.android.com/apk/res/android"   xmlns:autofit="http://schemas.android.com/apk/res-auto"
 android:layout_width="match_parent"
 android:layout_height="match_parent">
 <linearlayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:orientation="vertical"
  >
  <edittext
   android:id="@+id/input"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:singleline="true"
   android:hint="@string/input_hint"
   android:text="@string/example"/>
  <textview
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:text="@string/label_normal"
   />
  <textview
   android:id="@+id/output"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:text="@string/example"
   android:textsize="50sp"
   android:gravity="center"
   />
  <textview
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:text="@string/label_autofit"
   />
  <me.grantland.widget.autofittextview
   android:id="@+id/output_autofit"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:text="@string/example"
   android:textsize="50sp"
   android:gravity="center"
   android:singleline="true"
   autofit:mintextsize="8sp"
   />
 </linearlayout>
</scrollview>

activity_main.xml

string.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
 <string name="app_name">texttest</string>
 <string name="action_settings">settings</string>
 <string name="hello_world">hello world!</string>
 <string name="input_hint">text</string>
 <string name="label_normal">normal:</string>
 <string name="label_autofit">autofit:</string>
 <string name="example">this is an example</string>
</resources>

activity

package com.example.texttest;
import android.app.activity;
import android.os.bundle;
import android.text.editable;
import android.text.textwatcher;
import android.view.menu;
import android.widget.edittext;
import android.widget.textview;
public class mainactivity extends activity {
 private textview moutput;
 private textview mautofitoutput;
 @override
 protected void oncreate(bundle savedinstancestate) {
  super.oncreate(savedinstancestate);
  setcontentview(r.layout.activity_main);
  moutput = (textview)findviewbyid(r.id.output);
  mautofitoutput = (textview)findviewbyid(r.id.output_autofit);
  ((edittext)findviewbyid(r.id.input)).addtextchangedlistener(new textwatcher() {
   @override
   public void beforetextchanged(charsequence charsequence, int i, int i2, int i3) {
    // do nothing
   }
   @override
   public void ontextchanged(charsequence charsequence, int i, int i2, int i3) {
    moutput.settext(charsequence);
    mautofitoutput.settext(charsequence);
   }
   @override
   public void aftertextchanged(editable editable) {
    // do nothing
   }
  });
 }
 @override
 public boolean oncreateoptionsmenu(menu menu) {
  // inflate the menu; this adds items to the action bar if it is present.
  getmenuinflater().inflate(r.menu.main, menu);
  return true;
 }
}

mainactivity.java

效果:

Android之TextView自适应大小

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!

上一篇:

下一篇: