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>
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 }
效果:
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Android项目实战(二):安卓应用程序退出的三种方法
原文: Android项目实战(二):安卓应用程序退出的三种方法 现在的APP退出的时候都不是让用户点击了“后退键”就退出。防止用户点错了后退键而造成的用户体检不好。 一年前搞的Demo代码不见了,重新写下就当是复习和以后直接拿来用把 目前流行的解决一般分为两种: 一、按一次后退键显示一个对话框决定是否退出 1 @Override 2 public boolean onKeyDown(int keyCode, KeyEvent event) { 3 // TODO Auto-generated method stub 4 //点击了后退键 5 if(keyCode == KeyEvent.KEYCODE_BACK) 6 { 7 //创建对话框构建器对象 8 AlertDialog.Builder builder = new AlertDialog.Builder(this); 9 builder.setTitle("温馨提示")//对话框标题 10 .setMessage("确定要退出么?")//对话框内容 11 .setIcon(R.drawable.ic_launcher)//对话...
- 下一篇
Android项目实战(七):Dialog主题Activity实现自定义对话框效果
原文: Android项目实战(七):Dialog主题Activity实现自定义对话框效果 想必大家都用过Dialog主题的Activity吧,用它来显示自定义对话框效果绝对是一个非常不错的选择。 即把activity交互界面以Dialog的形式展现出来,Dialog主题的Activity大小将以内容的宽高来决定 <activity android:name=”MainActivity” android:theme=”@android:style/Theme.Dialog”> </activity> 可以看到设置为Theme.Dialog主题的activity显示效果, 是类似对话框的形式显示出来的,而背景则是这个Activity的上一个activity交互界面, 或者如果此Activity是程序第一个Activity,背景则是手机桌面 那么让我们自己做一个漂亮点的对话框形式的Activity 首先,要把Activity自带的标题去掉 使用requestWindowFeature(Window.FEATURE_NO_TITLE); 语句 注意 需要在setCon...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker安装Oracle12C,快速搭建Oracle学习环境