Android项目实战(五):TextView自适应大小

原文:Android项目实战(五):TextView自适应大小

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

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

实现依靠于第三方类库

第三方类来源:

https://github.com/grantland/android-autofittextview

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

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

android:singleLine="true"
 1 <me.grantland.widget.AutofitTextView
 2             android:id="@+id/output_autofit"
 3             android:layout_width="match_parent"
 4             android:layout_height="wrap_content"
 5             android:text="@string/example"
 6             android:textSize="50sp"
 7             android:gravity="center"
 8             android:singleLine="true"
 9             autofit:minTextSize="8sp"
10             />

布局文件:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
 3             xmlns:autofit="http://schemas.android.com/apk/res-auto"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent">
 6     <LinearLayout
 7         android:layout_width="match_parent"
 8         android:layout_height="wrap_content"
 9         android:orientation="vertical"
10         >
11         <EditText
12             android:id="@+id/input"
13             android:layout_width="match_parent"
14             android:layout_height="wrap_content"
15             android:singleLine="true"
16             android:hint="@string/input_hint"
17             android:text="@string/example"/>
18         <TextView
19             android:layout_width="match_parent"
20             android:layout_height="wrap_content"
21             android:text="@string/label_normal"
22             />
23         <TextView
24             android:id="@+id/output"
25             android:layout_width="match_parent"
26             android:layout_height="wrap_content"
27             android:text="@string/example"
28             android:textSize="50sp"
29             android:gravity="center"
30             />
31         <TextView
32             android:layout_width="match_parent"
33             android:layout_height="wrap_content"
34             android:text="@string/label_autofit"
35             />
36         <me.grantland.widget.AutofitTextView
37             android:id="@+id/output_autofit"
38             android:layout_width="match_parent"
39             android:layout_height="wrap_content"
40             android:text="@string/example"
41             android:textSize="50sp"
42             android:gravity="center"
43             android:singleLine="true"
44             autofit:minTextSize="8sp"
45             />
46     </LinearLayout>
47 </ScrollView>

activity_main.xml

string.xml

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <resources>
 3
 4     <string name="app_name">Texttest</string>
 5     <string name="action_settings">Settings</string>
 6     <string name="hello_world">Hello world!</string>
 7
 8     <string name="input_hint">text</string>
 9     <string name="label_normal">Normal:</string>
10     <string name="label_autofit">Autofit:</string>
11
12     <string name="example">This is an example</string>
13
14 </resources>

activity

 1 package com.example.texttest;
 2
 3 import android.app.Activity;
 4 import android.os.Bundle;
 5 import android.text.Editable;
 6 import android.text.TextWatcher;
 7 import android.view.Menu;
 8 import android.widget.EditText;
 9 import android.widget.TextView;
10
11 public class MainActivity extends Activity {
12
13     private TextView mOutput;
14     private TextView mAutofitOutput;
15     @Override
16     protected void onCreate(Bundle savedInstanceState) {
17         super.onCreate(savedInstanceState);
18         setContentView(R.layout.activity_main);
19         mOutput = (TextView)findViewById(R.id.output);
20         mAutofitOutput = (TextView)findViewById(R.id.output_autofit);
21
22         ((EditText)findViewById(R.id.input)).addTextChangedListener(new TextWatcher() {
23             @Override
24             public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {
25                 // do nothing
26             }
27
28             @Override
29             public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {
30                 mOutput.setText(charSequence);
31                 mAutofitOutput.setText(charSequence);
32             }
33
34             @Override
35             public void afterTextChanged(Editable editable) {
36                 // do nothing
37             }
38         });
39     }
40
41
42
43     @Override
44     public boolean onCreateOptionsMenu(Menu menu) {
45         // Inflate the menu; this adds items to the action bar if it is present.
46         getMenuInflater().inflate(R.menu.main, menu);
47         return true;
48     }
49
50 }

MainActivity.java

效果:

原文地址:https://www.cnblogs.com/lonelyxmas/p/8970170.html

时间: 2024-11-08 07:36:52

Android项目实战(五):TextView自适应大小的相关文章

Android项目实战(十四):TextView显示html样式的文字

原文:Android项目实战(十四):TextView显示html样式的文字 项目需求: TextView显示一段文字,格式为:白雪公主(姓名,字数不确定)向您发来了2(消息个数,不确定)条消息 这段文字中名字和数字的长度是不确定的,还要求名字和数字各自有各自的颜色. 一开始我想的是用(转) SpannableString与SpannableStringBuilder来实现,因为它可以实现一段文字显示不同的颜色 但是貌似它只能固定哪些位置的文字显示什么样式,于是乎放弃. 然后就想到了用 Html

Android项目实战(二十三):仿QQ设置App全局字体大小

原文:Android项目实战(二十三):仿QQ设置App全局字体大小 一.项目需求: 因为产品对象用于中老年人,所以产品设计添加了APP全局字体调整大小功能. 这里仿做QQ设置字体大小的功能. QQ实现的效果是,滚动下面的seekbar,当只有seekbar到达某一个刻度的时候,这时候上部分的效果展示部分会改变文字大小, 但是在拖动过程中字体不会改变.关闭此界面,就可以看到改变文字后app整体的实际文字大小效果了. ----------------------------------------

Android项目实战(十):自定义倒计时的TextView

原文:Android项目实战(十):自定义倒计时的TextView 项目总结 -------------------------------------------------------------------------------------------- 有这么一个需求: 我有一个ListView,每一个列表项 布局如上图,顶部一个大图片展示,中部一个音频播放,底部一个描述文字. 在这个界面,一次只能点击一个列表项的播放按钮,那么我直接在ListView所属的activity创建了唯一的

(转载)Android项目实战(三十二):圆角对话框Dialog

Android项目实战(三十二):圆角对话框Dialog 前言: 项目中多处用到对话框,用系统对话框太难看,就自己写一个自定义对话框. 对话框包括:1.圆角 2.app图标 , 提示文本,关闭对话框的"确定"按钮 难点:1.对话框边框圆角显示 2.考虑到提示文本字数不确定,在不影响美观的情况下,需要在一行内显示提示的文字信息   3.设置对话框的宽和高 技术储备: 1.安卓开发_使用AlertDialog实现对话框    知道AlertDialog有setView(view) ,Dia

Android项目实战(三十二):圆角对话框Dialog

原文:Android项目实战(三十二):圆角对话框Dialog 前言: 项目中多处用到对话框,用系统对话框太难看,就自己写一个自定义对话框. 对话框包括:1.圆角 2.app图标 , 提示文本,关闭对话框的"确定"按钮 难点:1.对话框边框圆角显示 2.考虑到提示文本字数不确定,在不影响美观的情况下,需要在一行内显示提示的文字信息   3.设置对话框的宽和高 技术储备: 1.安卓开发_使用AlertDialog实现对话框    知道AlertDialog有setView(view) ,

Android项目实战(八):列表右侧边栏拼音展示效果

原文:Android项目实战(八):列表右侧边栏拼音展示效果 之前忙着做项目,好久之前的技术都没有时间总结,而发现自己的博客好多写的技术都比自己掌握的时候晚了很多.不管怎么样,写技术博客一定是一个想成为优秀程序猿或者已经是优秀程序猿必须做的.好吧,下面进行学习阶段. 记得很久之前就使用过侧边拼音栏了,先看下它的效果,一个列表,列表的右侧有一个拼音列表,当列表发生滑动的时候,拼音列表也随着滑动,而规律就是拼音列表滑动的位置为显示列表的当前位置的文字的首字母决定,当然,直接点击拼音列表的一个位置,显

Android项目实战(一): SpannableString与SpannableStringBuilder

原文:Android项目实战(一): SpannableString与SpannableStringBuilder 前言: 曾经在一些APP中的一些类似“帮助”“关于”的界面看过一行文字显示不同的颜色的效果,如下效果: 本软件是一款高.大.上的社区类软件. 一般来说,这应该是由一个TextView来显示的,但是自己又不会实现,怎么办呢,只能一个颜色搞一个TextView连起来,形成上面的效果. 但是那样实现的话都显得太低级了.直到我偶然的知道了SpannableString 类.网上学习了一下,

Android项目实战(二十八):Zxing二维码实现及优化

原文:Android项目实战(二十八):Zxing二维码实现及优化 前言: 多年之前接触过zxing实现二维码,没想到今日项目中再此使用竟然使用的还是zxing,百度之,竟是如此牛的玩意. 当然,项目中我们也许只会用到二维码的扫描和生成两个功能,所以不必下载完整的jar包,使用简化版的即可,下文可见. 这篇文章讲述:1.如果快速在项目中集成zxing,实现扫描和生成二维码功能 2.根据项目需求去修改源码实现我们的要求并进行优化 一.快速集成zxing二维码 1.下载库文件 : http://do

Android项目实战(十二):解决OOM的一种偷懒又有效的办法

原文:Android项目实战(十二):解决OOM的一种偷懒又有效的办法 在程序的manifest文件的application节点加入android:largeHeap=“true” 即可. 对,只需要一句话! 那么这行代码的意思是什么呢? 简单的说就是使该APP获取最大可分配的内存,以便解决OOM问题. 但是.OOM问题出现的原因总得来说有两点: 1.某个手机的内存真的很少 2.代码问题,比如没有处理好Bitmap图片的大小 可以说,出现OOM的情况基本都是第二种情况,那么就需要修改代码,看看哪