Android文字外观设置及实际显示效果图

合集下载

Android 字体设置

Android 字体设置

Android 对中文字体支持很不好~~ 需要加入相应的字体库(1)创建布局Layout//创建线性布局LinearLayout linearLayout=new LinearLayout(this);//设定线性布局为垂直方向linearLayout.setOrientation(LinearLayout.VERTICAL);//以该线性布局做视图setContentView(linearLayout);(2)针对正常字体//普通正常字体norm al=new TextView(this);//设置字体内容,请注意:目前Android主要针对拉丁语系可使用字型设定,中文暂不支持norm al.setText("Norm al Font FYI");//设置字体大小norm al.setTextSize(20.0f);//设置字型为默认,正常字体norm al.setTypeface(Typeface.DEFAULT,Typeface.NORMAL);//增加该字体并显示到布局linearLayout中linearLayout.addView(norm al,new youtParam s(LayoutParam s.WRAP_CONTENT,LayoutParam s.WRAP_CONTENT));(3)针对粗体字体//粗体字体bold=new TextView(this);bold.setText("Bold Font FYI");bold.setTextSize(20.0f);//设置字体颜色为蓝色bold.setTextColor(Color.BLUE);//设置字型为默认粗体,粗体字体bold.setTypeface(Typeface.DEFAULT_BOLD, Typeface.BOLD);linearLayout.addView(bold,new youtParam s(LayoutParam s.WRAP_CONTENT,LayoutParam s.WRAP_CONTENT));(4)针对斜体字体//斜体字体italic=new TextView(this);italic.setTextSize(20f);italic.setText("Italic Font FYI");//设置字体颜色为红色italic.setTextColor(Color.RED);//设置字型为等宽字型,斜体字体italic.setTypeface(Typeface.MONOSPACE,Typeface.ITALIC);linearLayout.addView(italic,new youtParam s(LayoutParam s.WRAP_CONTENT,LayoutParam s.WRAP_CONTENT));(5)针对粗斜体字体//粗斜体字体italic_bold=new TextView(this);italic_bold.setTextSize(20f);italic_bold.setText("Italic & Bold Font FYI");//设置字体颜色为黄色italic_bold.setTextColor(Color.YELLOW);//设置字型为等宽字型,斜体字体italic_bold.setTypeface(Typeface.MONOSPACE,Typeface.BOLD_ITALIC);linearLayout.addView(italic_bold,new youtParam s(LayoutParam s.WRAP_CONTENT,LayoutParam s.WRAP_CONTENT)); (6)针对中文仿“粗体”//针对Android字型的中文字体问题chinese=new TextView(this);chinese.setText("中文粗体显示效果");//设置字体颜色chinese.setTextColor(Color.MAGENTA);chinese.setTextSize(20.0f);chinese.setTypeface(Typeface.DEFAULT_BOLD, Typeface.BOLD);//使用TextPaint的仿“粗体”设置setFakeBoldText为true。

android:设置中文字体效果的一些方法

android:设置中文字体效果的一些方法

android:设置中文字体效果的一些方法展开全文开发应用程序使用最多的还是String(字符串),下面我们就如何显示String详细的说明。

引用Android SDK中显示String的函数,列举如下:在所有的函数中,参数主要分为3部分:字符串(String、char、CharSequence),长度(start—end、index—count),如何显示String(paint)。

前2个参数一看就明白,这里我们主要介绍第3个参数Paint paint。

首先,什么是Paint?引用Android SDK 中的说明,Paint类包含样式和颜色有关如何绘制几何形状,文本和位图的信息。

Canvas是一块画布,具体的文本和位图如何显示,这就是在Paint类中定义了。

然后,Paint有哪些功能?在了解Paint的功能前,我们按照Word文档的功能,说明下对String的显示,有影响的因素有哪些?字体、大小(T extSize)、颜色(TextColor)、对齐方式(TextAlign)、粗体(Bold)、斜体(Italic)、下划线(Underline)等,下面我们就按照这些影响String显示的因素,结合Android SDK中Paint类的介绍,详细说明Paint类有哪些功能。

在Android SDK中使用Typeface类来定义字体,Typeface类:指定字体和字体的固有风格,用于Paint,类似于Paint的其他textSize,textSkewX,textScaleX一样,来说明如何绘制文本。

归纳起来,Typeface类主要包括以下3个方面:1.一些常量的定义(BOLD,BOLD_ITALIC,ITALIC,NORMAL)2.常量字体的定义:SERIF4.函数:创建字体(Create()),获取字体属性(getStyle()、isBold()、isItalic());5.Typeface类不仅定义了字体,还包括粗体(Bold)、斜体(Italic)。

AndroidStudioEditText(输入框)

AndroidStudioEditText(输入框)

AndroidStudioEditText(输⼊框)1.设置默认提⽰⽂本如下图相⽐另外这种,下⾯这种⼜如何?默认提⽰⽂本的两个控制属性:默认提⽰⽂本的两个属性如下:android:hint="默认提⽰⽂本"android:textColorHint="#95A1AA"前者设置提⽰的⽂本内容,后者设置提⽰⽂本的颜⾊!2.获得焦点后全选组件内所有⽂本内容当我们想在点击输⼊框获得焦点后,不是将光标移动到⽂本的开始或者结尾;⽽是获取到输⼊框中所有的⽂本内容的话!这个时候我们可以使⽤selectAllOnFocus属性android:selectAllOnFocus="true"⽐如下⾯的效果图: 第⼀个是设置了该属性的,第⼆个是没设置该属性的,设置为true的EditText获得焦点后选中的是所有⽂本!3.限制EditText输⼊类型有时我们可能需要对输⼊的数据进⾏限制,⽐如输⼊电话号码的时候,你输⼊了⼀串字母,这显然是不符合我们预期的,⽽限制输⼊类型可以通过inputType属性来实现!⽐如限制只能为电话号码,密码(textPassword):<EditTextandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:inputType="phone" />可选参数如下:⽂本类型,多为⼤写、⼩写和数字符号android:inputType="none"android:inputType="text"android:inputType="textCapCharacters"android:inputType="textCapWords"android:inputType="textCapSentences"android:inputType="textAutoCorrect"android:inputType="textAutoComplete"android:inputType="textMultiLine"android:inputType="textImeMultiLine"android:inputType="textNoSuggestions"android:inputType="textUri"android:inputType="textEmailAddress"android:inputType="textEmailSubject"android:inputType="textShortMessage"android:inputType="textLongMessage"android:inputType="textPersonName"android:inputType="textPostalAddress"android:inputType="textPassword"android:inputType="textVisiblePassword"android:inputType="textWebEditText"android:inputType="textFilter"android:inputType="textPhonetic"数值类型android:inputType="number"android:inputType="numberSigned"android:inputType="numberDecimal"android:inputType="phone"//拨号键盘android:inputType="datetime"android:inputType="date"//⽇期键盘android:inputType="time"//时间键盘4.设置最⼩⾏,最多⾏,单⾏,多⾏,⾃动换⾏EditText默认是多⾏显⽰的,并且能够⾃动换⾏,即当⼀⾏显⽰不完的时候,他会⾃动换到第⼆⾏我们可以对其进⾏限制,⽐如设置最⼩⾏的⾏数:android:minLines="3"或者设置EditText最⼤的⾏数:android:maxLines="3"PS:当输⼊内容超过maxline,⽂字会⾃动向上滚动!!另外很多时候我们可能要限制EditText只允许单⾏输⼊,⽽且不会滚动,⽐如上⾯的登陆界⾯的例⼦,我们只需要设置android:singleLine="true"即可实现单⾏输⼊不换⾏5.设置⽂字间隔,设置英⽂字母⼤写类型我们可以通过下述两个属性来设置字的间距:android:textScaleX="1.5" //设置字与字的⽔平间隔android:textScaleY="1.5" //设置字与字的垂直间隔另外EditText还为我们提供了设置英⽂字母⼤写类型的属性:android:capitalize 默认none,提供了三个可选值:sentences:仅第⼀个字母⼤写words:每⼀个单词⾸字母⼤⼩,⽤空格区分单词characters:每⼀个英⽂字母都⼤写6.控制EditText四周的间隔距离与内部⽂字与边框间的距离我们使⽤margin相关属性增加组件相对其他控件的距离,⽐如android:marginTop = "5dp" 使⽤padding增加组件内⽂字和组件边框的距离,⽐如android:paddingTop = "5dp"7.设置EditText获得焦点,同时弹出⼩键盘关于这个EditText获得焦点,弹出⼩键盘的问题,前不久的项⽬中纠结了笔者⼀段时间需求是:进⼊Activity后,让EditText获得焦点,同时弹出⼩键盘供⽤户输⼊!试了很多⽹上的⽅法都不可以,不知道是不是因为笔者⽤的5.1的系统的问题!下⾯⼩结下:⾸先是让EditText获得焦点与清除焦点的edit.requestFocus(); //请求获取焦点edit.clearFocus(); //清除焦点获得焦点后,弹出⼩键盘,笔者⼤部分时间就花在这个上:低版本的系统直接requestFocus就会⾃动弹出⼩键盘了稍微⾼⼀点的版本则需要我们⼿动地去弹键盘:第⼀种:InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);第⼆种:InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(view,InputMethodManager.SHOW_FORCED); imm.hideSoftInputFromWindow(view.getWindowToken(), 0); //强制隐藏键盘不知道是什么原因,上⾯这两种⽅法并没有弹出⼩键盘,笔者最后使⽤了:windowSoftInputMode属性解决了弹出⼩键盘的问题,这⾥跟⼤家分享下:android:windowSoftInputMode Activity主窗⼝与软键盘的交互模式,可以⽤来避免输⼊法⾯板遮挡问题,Android1.5后的⼀个新特性。

android更改TextView中任意位置字体大小和颜色的方法

android更改TextView中任意位置字体大小和颜色的方法

android更改TextView中任意位置字体⼤⼩和颜⾊的⽅法这⾥介绍两种⽅法,⼀种是Spannable,⼀种是Html.fromHtml(通过html标签来改变),实际中看您使⽤哪种⽅便选择使⽤即可1.Html.fromHtml的使⽤TextView textView = (TextView) findViewById(R.id.text);String textSource = "修改TextView中部分⽂字的<font color='#ff0000'><big>⼤</big><small>⼩</small></font>和<font color='#00ff00'>颜⾊</font>,展⽰多彩效果!"; textView.setText(Html.fromHtml(textSource));上⾯是没有加html标签,下⾯是加了html标签的效果:2.使⽤Spannable来实现textView = (TextView) findViewById(R.id.textview);SpannableStringBuilder builder = new SpannableStringBuilder(textView.getText().toString());//ForegroundColorSpan 为⽂字前景⾊,BackgroundColorSpan为⽂字背景⾊ForegroundColorSpan redSpan = new ForegroundColorSpan(Color.RED);ForegroundColorSpan whiteSpan = new ForegroundColorSpan(Color.WHITE);ForegroundColorSpan blueSpan = new ForegroundColorSpan(Color.BLUE);ForegroundColorSpan greenSpan = new ForegroundColorSpan(Color.GREEN);ForegroundColorSpan yellowSpan = new ForegroundColorSpan(Color.YELLOW);builder.setSpan(redSpan, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);builder.setSpan(whiteSpan, 1, 2, Spannable.SPAN_INCLUSIVE_INCLUSIVE);builder.setSpan(blueSpan, 2, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);builder.setSpan(greenSpan, 3, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);builder.setSpan(yellowSpan, 4,5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);textView.setText(builder);使⽤Spannable效果如下图:是不是很简单,但是效果强⼤,赶紧来实现吧以上这篇android 更改TextView中任意位置字体⼤⼩和颜⾊的⽅法就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

Android实现修改状态栏背景、字体和图标颜色的方法

Android实现修改状态栏背景、字体和图标颜色的方法

Android实现修改状态栏背景、字体和图标颜⾊的⽅法前⾔:Android开发,对于状态栏的修改,实在是不友好,没什么api可以⽤,不像ios那么⽅便.但是ui⼜喜欢只搞ios⼀套.没办法.各种翻源码,写反射.真的蛋疼.需求场景:当toolbar及状态栏需要为⽩⾊或浅⾊时(如简书),状态栏由于⽤的Light风格Theme,字体,图标也都是⽩⾊,会看不清.如果改变成⿊⾊就很和谐了.⼀.修改状态栏颜⾊:改变状态栏颜⾊,可以看看这篇⽂章.传送门:传送门实现的效果:这种⽅法实现的状态栏变⾊,没有⿊⾊背景.使⽤全屏模式实现的效果如下(QQ的效果):很明显的⿊⾊背景.我⽤的⼿机是华为,系统7.0⼆.修改状态栏字体:通⽤⼯具类:public class StatusBarUtil {/*** 设置状态栏⿊⾊字体图标,* 适配4.4以上版本MIUIV、Flyme和6.0以上版本其他Android** @return 1:MIUUI 2:Flyme 3:android6.0*/public static int getStatusBarLightMode(Window window) {int result = 0;if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {if (MIUISetStatusBarLightMode(window, true)) {result = 1;} else if (FlymeSetStatusBarLightMode(window, true)) {result = 2;} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);result = 3;} else {//5.0}}return result;}/*** 已知系统类型时,设置状态栏⿊⾊字体图标。

教你如何修改手机显示的字体效果,让你的手机个性十足(手机需要ROOT权限,一个能访问手机系统文件的工具)

教你如何修改手机显示的字体效果,让你的手机个性十足(手机需要ROOT权限,一个能访问手机系统文件的工具)

下面以三星I9100为例讲解如何修改手机显示字体。

其他的手机原理一样。

RootExplorer.apk(224.99K):这个是RE管理器,需要安装。

可以管理ROOT过的手机系统文件,UI程序都可以改,还有什么默认铃声什么的都可以改的。

下载地址:/cgi-bin/ftnExs_download?k=243764333a1ec5cba593251a1f620c1b595257 0b0d060c054c545152004f0d04070749525f500d19020f57020d5b0e5503035756397239660e5810764 112555b1352161d5812523425&t=exs_ftn_download&code=a7d39b94DroidSansFallback.ttf:这个是我们手机里面的默认显示的字体库文件,这个发给你是防止你哪天不想改字体了,就把这个文件拷回去就行了。

下载地址:/cgi-bin/ftnExs_download?k=2b383831af63d3cba59c79181562501b580f0e 07020006554c5c0109064f5152540b1550570754190059590857015456005b0a5433776570135751556 0030b472759545d5103065f4f4c4c573326&t=exs_ftn_download&code=a8813be4注意改名哦.ttf:这个是我现在用的这个字体文件,效果你可以打开看,或者去我空间(692167876)相册的第一个相册查看,那上面的字体就是这个字体库出现的效果。

下载地址:/cgi-bin/ftnExs_download?k=2535316233bd7bcfa291704b15380c1f540107 00075c00554b020********d0457531c00020b0c1d070d5203520c58530702005b333639e7c4e7d3daf 7fbc2f5d01b451655387d&t=exs_ftn_download&code=f51b3890若某个文件不能下载了可以联系我,空间留言就行,不加好友.我们电脑里面的字体库文件路径:系统盘(就是你装系统的盘)-->windows-->Fontsfonts文件夹里面都是字体库文件,有的是显示用的,有的是输入用的,你要是想换别的字体的话,可以去网上找,或者到我们电脑的字体库文件夹里面找,现成的资源啊。

文本显示框TextView在Android中经常需要设置尺寸

文本显示框TextView在Android中经常需要设置尺寸

对应方法
setTextColor(int) setTextSize(int,float)
说明
设置文本的颜色 设置文本的大小
android:textStyle
android:typeface android:width
setTypeface(Typeface) 设置文本的风格
setTypeface(Typeface) 设置文本的字体 setWidth(int) 设置文本框的宽度(pixel为单位)

View和ViewGroup介绍
View和ViewGroup关系
View与ViewGroup的关 系类似于文件与文件夹 的关系;
View与ViewGroup组合 使用,形成一种界面布 局的层次结构。

某界面的View控件结构图

文本显示框(TextView)
除了上述几乎所有文本显示控件都拥有的属性外,Android 中的TextView还提供一些特殊功能,例如:自动识别文本中 的各种链接、显示部分HTML标签定义的格式。
识别自动链接的属性为:android:autoLink,该属性的值为: none:不匹配任何格式,这是默认值。 web:只匹配网址,网址会以超链接的形式显示。 email:只匹配电子邮箱,电子邮箱会以超链接的形式显示。 phone:只匹配电话号码,电话号码会以超链接的形式显示。 map:只匹配地图地址,地理位置会以超链接的形式显示。 all:匹配以上所有。

View和ViewGroup介绍
ViewGroup类介绍
ViewGroup类是View类的一个抽象子类,是一种
特殊的View;
是所有布局类和容器组件的超类,ViewGroup中

Android给TextView设置透明背景、圆角边框

Android给TextView设置透明背景、圆角边框

Android给TextView设置透明背景、圆角边框第一种方法:在drawable文件夹下新建一个文件设置背景样式代码:在drawable文件夹下面新建text_view_border.xml[java]view plaincopy1.<?xml version="1.0" encoding="UTF-8"?>2.<shape xmlns:android="/apk/res/android">3.<solid android:color="#80858175" />4.<stroke android:width="1dip" android:color="#aea594" / >5.<corners android:topLeftRadius="2dp"6.android:topRightRadius="2dp"7.android:bottomRightRadius="2dp"8.android:bottomLeftRadius="2dp"/>9.</shape>在布局文件调用[java]view plaincopy1.<TextView2.android:id="@+id/tv"3.android:layout_width="wrap_content"4.android:layout_height="wrap_content"5.android:background="@drawable/text_view_border" />在类文件中调用:[java]view plaincopy.setBackgroundResource(R.drawable.text_view_border);分析:solid设置填充颜色,颜色值以#80开头表示透明stroke 设置边框宽度,颜色值corners设置圆角第二种方法:用图片设置background。

Android-用java给textview设置文本内容颜色,背景色,背景图片,Drawa。。。

Android-用java给textview设置文本内容颜色,背景色,背景图片,Drawa。。。

Android-⽤java给textview设置⽂本内容颜⾊,背景⾊,背景图⽚,Drawa。

#给textView 添加⽂字颜⾊setTextColor(0xFF0000FF);//0xFF0000FF是int类型的数据,分组⼀下0x|FF|0000FF,0x是代表颜⾊整数的标记,ff是表⽰透明度,0000FF表⽰颜⾊,注意:这⾥0xFF0000FF必须是8个的颜⾊表⽰,不接受0000FF这种6个的颜⾊表⽰。

setTextColor(Color.rgb(255, 255, 255));setTextColor(Color.parseColor("#FFFFFF"));//还有就是使⽤资源⽂件进⾏设置setTextColor(this.getResources().getColor(R.color.blue));//通过获得资源⽂件进⾏设置。

根据不同的情况R.color.blue也可以是R.string.blue或者//另外还可以使⽤系统⾃带的颜⾊类setTextColor(android.graphics.Color.BLUE);#给textView 添加背景⾊,背景图⽚setBackgroundResource:通过颜⾊资源ID设置背景⾊。

setBackgroundColor:通过颜⾊值设置背景⾊。

setBackgroundDrawable:通过Drawable对象设置背景⾊。

下⾯分别演⽰如何⽤这3个⽅法来设置TextView组件的背景setBackgroundResource⽅法设置背景:textView.setBackgroundResource(R.color.background);setBackgroundColor⽅法设置背景:textView.setBackgroundColor(android.graphics.Color.RED);setBackgroundDrawable⽅法设置背景:Resources resources=getBaseContext().getResources();Drawable drawable=resources.getDrawable(R.color.background);textView.setBackgroundDrawable(drawable);// 作⽤:在EditText上、下、左、右设置图标(相当于android:drawableLeft="" android:drawableRight="")// 注1:setCompoundDrawablesWithIntrinsicBounds()传⼊的Drawable的宽⾼=固有宽⾼(⾃动通过getIntrinsicWidth()& getIntrinsicHeight()获取)// 注2:若不想在某个地⽅显⽰,则设置为null// 此处设置了左侧搜索图标// 另外⼀个相似的⽅法:setCompoundDrawables(Drawable left, Drawable top, Drawable right, Drawable bottom)介绍// 与 setCompoundDrawablesWithIntrinsicBounds()的区别:可设置图标⼤⼩// 传⼊的Drawable对象必须已经setBounds(x,y,width,height),即必须设置过初始位置、宽和⾼等信息// x:组件在容器X轴上的起点 y:组件在容器Y轴上的起点 width:组件的长度 height:组件的⾼度⽰例是给标签⽂本设置图标....searchRecordsLabel.setLabels(searchRecordList, new belTextProvider<SearchWordBean>() {@Overridepublic CharSequence getLabelText(TextView label, int position, SearchWordBean data) {// return null;// label就是标签项,在这⾥可以对标签项单独设置⼀些属性,⽐如⽂本样式等。

Android使用TypeFace设置TextView的文字字体

Android使用TypeFace设置TextView的文字字体

Android使⽤TypeFace设置TextView的⽂字字体在Android⾥⾯设置⼀个TextView的⽂字颜⾊和⽂字⼤⼩,都很简单,也是⼀个常⽤的基本功能。

但很少有设置⽂字字体的,今天要分享的是通过TypeFace去设置TextView的⽂字字体,布局⾥⾯有两个Button,总共包含两个⼩功能:换字体和变⼤。

功能的核⼼部分主要是两点:创建assets外部资源⽂件夹,将ttf格式的字体⽂件放在该⽬录下通过TypeFace类的createFromAsset⽅法,让TextView通过setTypeFace来改变字体完整源码如下:1、主Activity,注意细看代码中的注释:import android.app.Activity;import android.graphics.Typeface;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;import com.example.memorydemo.R;public class ChangeFontActivity extends Activity implements View.OnClickListener {private TextView textViewFont;@Overrideprotected void onCreate(Bundle onSavedInstance) {super.onCreate(onSavedInstance);setContentView(yout.change_textview_font);textViewFont = findViewById(R.id.textViewFont);Button btnChangeFont = findViewById(R.id.buttonChangeFont);Button btnAmplify = findViewById(R.id.buttonAmplify);btnChangeFont.setOnClickListener(this);btnAmplify.setOnClickListener(this);}@Overridepublic void onClick(View view) {switch (view.getId()) {case R.id.buttonChangeFont:// 这⾥我是从Android framework⽬录下随便挑了⼀种字体textViewFont.setTypeface(Typeface.createFromAsset(getAssets(), "fonts/BitMDL2.ttf"));// 直接将 ttf ⽂件放在 assets ⽬录下也是可以的// textViewFont.setTypeface(Typeface.createFromAsset(getAssets(), "BitMDL2.ttf"));break;case R.id.buttonAmplify:// 布局⾥⾯默认⼤⼩是 12 SP,这⾥将字体⼤⼩设置为 24 SP,⽅便看效果textViewFont.setTextSize(24);break;default:break;}}}字体⽂件的存放⽬录结构如下(ttf字体⽂件既可以直接放在assets⽬录,也可以在assets下新建⼀层⽬录,⽐如我建了⼀层fonts⽬录):2、布局⽂件change_textview_font.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><TextView android:layout_width="wrap_content" android:layout_height="60dp"android:id="@+id/textViewFont" android:layout_gravity="center"android:text="This is a Font"android:textSize="12sp"android:paddingTop="20dp"/><Buttonandroid:text="换字体"android:layout_width="wrap_content"android:layout_gravity="center"android:layout_height="60dp" android:id="@+id/buttonChangeFont" /><Buttonandroid:text="变⼤"android:layout_width="wrap_content"android:layout_gravity="center"android:layout_marginTop="15dp"android:layout_height="60dp" android:id="@+id/buttonAmplify" /></LinearLayout>3、效果图如下(先点击变⼤、再更换字体):关于Android的字体,有以下两点要注意:字体⽂件必须是ttf(True Type Font)格式,否则,即使程序编译时不出错,在运⾏时也会发⽣⽆法更改字体的情况⽬前Android在⽀持字体⽂件时还有些问题,即使⽤了不⽀持的字体,Android也不会发⽣错误,⽽是以默认字体 Droid Sans 替换。

Androidtextview设置不同的字体大小和颜色

Androidtextview设置不同的字体大小和颜色

Androidtextview设置不同的字体⼤⼩和颜⾊在实际应⽤中,需要将⼀个字符串已不同的颜⾊,字体显⽰出来。

当然完全可以通过不同textview拼接出来。

也可以通过⼀个textview来展⽰。

步骤如下:1.定义不同style .不妨如下定义2个style<style name="style0"><item name="android:textSize">19dip</item><item name="android:textColor">@color/color1</item></style><style name="style1"><item name="android:textSize">23dip</item><item name="android:textColor">@color/color2</item><item name="android:textStyle">italic</item></style>2 . 通过SpannableString 设置字符串格式。

代码如下:mTextView = (TextView)findViewById(R.id.test);SpannableString styledText = new SpannableString("Android,你好");styledText.setSpan(new TextAppearanceSpan(this, R.style.style0), 0, 3, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);styledText.setSpan(new TextAppearanceSpan(this, R.style.style1), 3, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);mTextView.setText(styledText, TextView.BufferType.SPANNABLE);。

[复习]android设置TextView部分文字的颜色和背景(高亮显示)

[复习]android设置TextView部分文字的颜色和背景(高亮显示)

android--设置TextV iew部分文字的颜色和背景(高亮显示)设置部分文字背景高亮显示:Java代码1publicclassHighLightActivityextendsActivity{2Stringstrs="我的心太乱了,给我点空白。

";3TextViewtextview;4intstart=3;5intend=5;6/**Calledwhentheactivityisfirstcreated.*/7@Override8publicvoidonCreate(BundlesavedInstanceState){9super.onCreate(savedInstanceState);10setContentView(yout.high_light);11textview=(TextView)findViewById(R.id.textview);12SpannableStringBuilderstyle=newSpannableStringBuilder(strs);13style.setSpan(newBackgroundColorSpan(Color.RED),start,end,Spannable.SPAN_EXCL USIVE_EXCLUSIVE);14textview.setText(style);1516}1718}192021同时设置文字和背景高亮显示:Java代码22packagecom.justel.contact;2324importandroid.app.Activity;25importandroid.graphics.Color;26importandroid.os.Bundle;27importandroid.text.Spannable;28importandroid.text.SpannableStringBuilder;29importandroid.text.style.BackgroundColorSpan;30importandroid.text.style.ForegroundColorSpan;31importandroid.widget.TextView;3233publicclassHighLightActivityextendsActivity{34Stringstrs="我的心太乱了,给我点空白。

android textview 整体文字颜色横向渐变

android textview 整体文字颜色横向渐变

android textview 整体文字颜色横向渐变要实现Android T extView整体文字颜色的横向渐变效果,可以使用自定义的SpannableStringBuilder类来实现。

SpannableStringBuilder类是用来创建和修改可变的Spanned文本的类,Spanned文本是Android中文本样式的一种实现方式。

下面是实现横向渐变效果的步骤:1. 首先,我们需要创建一个自定义的SpannableStringBuilder对象,并将TextView原有的文本设置给它:javaSpannableStringBuilder builder = newSpannableStringBuilder(textView.getText());2. 然后,我们需要定义渐变效果的开始颜色和结束颜色,可以使用Color类中的静态方法来获取颜色值:javaint startColor = Color.RED;int endColor = Color.BLUE;3. 接下来,我们还需要知道渐变效果的文本范围,即从哪个位置开始到哪个位置结束。

可以使用TextView的getText方法获取到完整的文本,并使用length 方法获取到文本的长度:javaint textLength = textView.getText().length();4. 然后,我们需要为文本设置渐变效果。

首先,将两个颜色值通过ArgbEvaluator类的evaluate方法生成渐变颜色数组:javaArgbEvaluator argbEvaluator = new ArgbEvaluator();int[] colors = new int[textLength];for (int i = 0; i < textLength; i++) {float fraction = i / (float) (textLength - 1);colors[i] = (int) argbEvaluator.evaluate(fraction, startColor, endColor);}5. 然后,我们需要为文本设置Span效果。

Android的标题栏,状态栏图标文字颜色及背景动态变化

Android的标题栏,状态栏图标文字颜色及背景动态变化

Android的标题栏,状态栏图标⽂字颜⾊及背景动态变化安卓中沉浸式状态栏的⽂章已经满⼤街了,可是在实现某些效果时,还是得各种搜索,测试⼀通后,最后还常常满⾜不了要求,即使好不容易在⼀部⼿机上满⾜了需求,放在另外⼀⼿机上,发现效果还各种不适配。

今下。

问题⽐如我想实现以下效果:1. 同⼀个活动需要动态变换标题栏和状态栏⽂字字体⾊值,该如何实现?2. ⼀个活动包含多个⽚段切换时,不同的⽚段的状态栏背景,状态栏⽂字颜⾊和图标要求不⼀样怎么实现?3. 设置沉浸式状态栏,各个Android的版本之间差别如何,那么多国旗,长得都⼀样,都有什么区别?⽆图⽆真相,带着这⼏个问题,先上两张我实现的效果图。

下⾯是同⼀个活动切换不同⽚段时,状态栏⽂字颜⾊跟着变化的效果图:同⼀个活动切换不同⽚段时,状态栏⽂字颜⾊跟着变化下图是同⼀个活动向上滚动时,标题栏和状态栏⽂字颜⾊根据变化的效果:活动向上滚动时,标题栏和状态栏⽂字颜⾊根据变化1.实现透明状态栏常规⽅法protected boolean useThemestatusBarColor = false;//是否使⽤特殊的标题栏背景颜⾊,android5.0以上可以设置状态栏背景⾊,如果不使⽤则使⽤透明⾊值protected boolean useStatusBarColor = true;//是否使⽤状态栏⽂字和图标为暗⾊,如果状态栏采⽤了⽩⾊系,则需要使状态栏和图标为暗⾊,android6.0以上可以设置protected void setStatusBar() {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {//5.0及以上View decorView = getWindow().getDecorView();int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN| View.SYSTEM_UI_FLAG_LAYOUT_STABLE;decorView.setSystemUiVisibility(option);//根据上⾯设置是否对状态栏单独设置颜⾊if (useThemestatusBarColor) {getWindow().setStatusBarColor(getResources().getColor(R.color.colorTheme));} else {getWindow().setStatusBarColor(Color.TRANSPARENT);}} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {//4.4到5.0youtParams localLayoutParams = getWindow().getAttributes();localLayoutParams.flags = (youtParams.FLAG_TRANSLUCENT_STATUS | localLayoutParams.flags);}if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !withoutUseStatusBarColor) {//android6.0以后可以对状态栏⽂字颜⾊和图标进⾏修改getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN|View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);}}在活动布局的根节点处加上机器⼈:fitsSystemWindows =”真”属性就可以了,要不布局会跑到状态栏和导航栏下⾯,与导航栏和状态栏重叠,这当然不是我们希望的。

Android编程开发之TextView文字显示和修改方法(附TextView属性介绍)

Android编程开发之TextView文字显示和修改方法(附TextView属性介绍)

Android编程开发之TextView⽂字显⽰和修改⽅法(附TextView属性介绍)本⽂实例讲述了Android编程开发之TextView⽂字显⽰和修改⽅法。

分享给⼤家供⼤家参考,具体如下:⼀. 新建⼀个Activity 和 Layout⾸先在layout⽂件夹中新建⼀个activity_main.xml,在新建⼯程的时候⼀般默认会新建此xml⽂件,修改其代码如下:activity_main.xml 代码<RelativeLayout xmlns:android="/apk/res/android"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity" ><TextViewandroid:id="@+id/lblTitle"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_alignParentTop="true"android:layout_marginLeft="88dp"android:layout_marginTop="51dp"android:text="TextView" /></RelativeLayout>修改MainActivity.java⽂件代码如下:MainActivity.java 代码:public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);TextView lblTitle=(TextView)findViewById(R.id.lblTitle);lblTitle.setText("这是显⽰的内容");}}通过以上⽅法就可以修改TextView中的显⽰⽂字内容了⼆. 显⽰连接⽂字显⽰连接字符串@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);TextView lblTitle=(TextView)findViewById(R.id.lblTitle);lblTitle.setText("<a href=\"\">百度</>");}修改如上代码,然后运⾏查看⼿机界⾯,发现并没有⾃动以Html格式来解析此字符串,说明TextView模式是不⽀持Html字符串解析的解析带有http的⽂字@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);TextView lblTitle=(TextView)findViewById(R.id.lblTitle);lblTitle.setAutoLinkMask(Linkify.ALL);lblTitle.setText("<a href=\"\">百度</>");}我们可以通过setAutoLinkMask 来设置带有连接的字符串,或者使⽤如下代码:连接⽂字显⽰:<RelativeLayout xmlns:android="/apk/res/android"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity" ><TextViewandroid:id="@+id/lblTitle"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_alignParentTop="true"android:layout_marginLeft="88dp"android:layout_marginTop="51dp"android:autoLink="all"android:text="TextView" /></RelativeLayout>附:Android的TextView属性XML详解:属性名称描述android:autoLink 设置是否当⽂本为URL链接/email/电话号码/map时,⽂本显⽰为可点击的链接。

Android文本显示:TextView

Android文本显示:TextView

Android文本显示:T extView更多请关注/cpfdpzcTextView用来显示文本,还可以显示链接学到的知识点:1.可以再xml中设置TextView的样式2.在代码里设置显示的效果下面的例子主要实现三种在TexTView中添加链接,和在代码中添加TextView样式;3.实例:1MainActivity.java2package com.textviewlink;34import android.app.Activity;5import android.os.Bundle;6import android.text.Html;7import android.text.method.LinkMovementMethod;8import android.view.Menu;9import android.widget.TextView;1011public class MainActivity extends Activity {12private TextView tv2 = null;13private TextView tv3 = null;1415@Override16protected void onCreate(Bundle savedInstanceState) {17super.onCreate(savedInstanceState);18 setContentView(yout.main);19 tv2 = (TextView)findViewById(2);20//设置tv2可点击必须加,不然不能点击21 tv2.setMovementMethod(LinkMovementMethod.getInstance());2223 tv3 = (TextView)findViewById(3);24//tv3 html代码实现连接25 tv3.setText(Html.fromHtml("方法三"+ "<a href=\"\">百度</a>"));26 tv3.setMovementMethod(LinkMovementMethod.getInstance());27 }2829@Override30public boolean onCreateOptionsMenu(Menu menu) {31 getMenuInflater().inflate(R.menu.activity_main, menu);32return true;33 }3435}main.xml36<?xml version="1.0"encoding="utf-8"?>37<LinearLayout xmlns:android="/apk/res/android"38android:layout_width="match_parent"39android:layout_height="match_parent"40android:orientation="vertical">4142<TextView43android:layout_width="match_parent"44android:layout_height="wrap_content"45android:text="@string/link1"46android:textSize="30px"47android:autoLink="all"/>48<!-- android:autoLink="all" 属性可以为所有类型添加链接 -->49<TextView50android:id="@+id/tv2"51android:layout_width="match_parent"52android:layout_height="wrap_content"53android:textSize="30px"54android:text="@string/link2"/>55<TextView56android:id="@+id/tv3"57android:layout_width="match_parent"58android:layout_height="wrap_content"59android:textSize="30px"/>60</LinearLayout>strings.xml61<?xml version="1.0"encoding="utf-8"?>62<resources>6364<string name="app_name">TextViewLink</string>65<string name="hello_world">Hello world!</string>66<string name="menu_settings">Settings</string>67<string name="link1">方法一点击</string>68<string name="link2">方法二<a href="">百度</a>69<a href="">google</a></string>70<!-- 在方法二当中,需要在MainActivity中使用setMovementMethod()来实现激活链接,否则不能点击 -->71</resources>4效果图:5.代码设置样式72package com.textview;7374import android.app.Activity;75import android.graphics.Color;76import android.os.Bundle;77import android.view.Menu;78import android.widget.TextView;7980public class MainActivity extends Activity {81private TextView tv1 = null;82@Override83protected void onCreate(Bundle savedInstanceState) {84super.onCreate(savedInstanceState);85 setContentView(yout.main);86 tv1 = (TextView)findViewById(1);87 tv1.setText("利用代码来设置Textview的显示样式");88 tv1.setTextColor(Color.BLUE);89 tv1.setTextSize(30);90 tv1.setBackgroundColor(Color.RED);91 tv1.setPadding(10, 10, 10, 10);92 tv1.setVisibility(0);93/*94 android view的setVisibility方法值有3个:95 1.View.VISIBLE,常量值为0,意思是可见的96 2.View.INVISIBLE,常量值是4,意思是不可见的97 3.View.GONE,常量值是8,意思是不可见的,并且不占用布局空间,就是根据值得不同显示效果也不同98 * */99 }100101@Override102public boolean onCreateOptionsMenu(Menu menu) {103// Inflate the menu; this adds items to the action bar if it is present. 104 getMenuInflater().inflate(R.menu.activity_main, menu);105return true;106 }107108}。

安卓字体

安卓字体

Android字体简介Android系统默认支持三种字体,分别为:“sans”,“serif”,“monospace”。

android.graphic.typeface字体类:本类的常量静态定义,首先为字体类型(typeface)名称TypefaceDEFAULTTypeface DEFAULT_BOLDTypeface MONOSPACETypefaceSANS_SERIFTypeface SERIF字体风格(style)名称intBOLDint BOLD_ITALICint ITALICint NORMAL设置TextView的字体可以通过TextView中的setTypeface方法来指定一个Typeface对象,因为Android的字体类比较简单,我们列出所有成员方法:∙staticTypeface create(Typeface family, int style)//静态方法,参数一为字体类型这里是Typeface的静态定义,如宋体,参数二风格,如粗体,斜体∙∙staticTypeface create(String familyName, int style)//静态方法,参数一为字体名的字符串,参数二为风格同上,这里我们推荐使用上面的方法。

∙∙staticTypeface createFromAsset(AssetManager mgr, String path)//静态方法,参数一为AssetManager对象,主要用于从APK的assets文件夹中取出字体,参数二为相对于Android工程下的assets文件夹中的外挂字体文件的路径。

∙∙staticTypeface createFromFile(File path)//静态方法,从文件系统构造一个字体,这里参数可以是sdcard中的某个字体文件∙∙staticTypeface createFromFile(String path) //静态方法,从指定路径中构造字体∙∙staticTypeface defaultFromStyle(int style) //静态方法,返回默认的字体风格∙∙intgetStyle() //获取当前字体风格∙∙finalboolean isBold() //判断当前是否为粗体∙∙finalboolean isItalic() //判断当前风格是否为斜体∙例程:1/wonderful19891024/archive/2010/11/24/6033304.aspx2/thread-536-1-1.htmlAndroid字体工作原理android字体由android 2D图形引擎skia实现,并在Zygote的Preloading classes中对系统字体进行load。

AndroidTextView实现多文本折叠、展开效果

AndroidTextView实现多文本折叠、展开效果

AndroidTextView实现多⽂本折叠、展开效果背景在开发过程中,当我们的需求中包含说说或者评论等内容的展⽰时,我们都会考虑当内容太多时该如何显⽰。

当内容的字数太多,如果全部展⽰出来可能会影响体验效果,但是⼜不能只截取⼀部分内容进⾏展⽰,此时就需要考虑使⽤多⾏显⽰折叠的效果来实现。

效果图:使⽤1.布局⽂件调⽤<LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><com.wiggins.expandable.widget.MoreLineTextViewandroid:id="@+id/tv_more_line_short"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="@color/white"android:padding="@dimen/padding_small"app:clickAll="true"app:textColor="@color/red" /><View style="@style/spaceLine" /><com.wiggins.expandable.widget.expandable.ExpandableTextViewandroid:id="@+id/tv_expandable_short"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="@color/white"android:ellipsize="end"android:padding="@dimen/padding_small"android:textColor="@color/blue"app:allClickable="false"app:contentTextColor="@color/blue"app:isDisplayIcon="false"app:maxCollapsedLines="4" /><View style="@style/spaceLine" /><com.wiggins.expandable.widget.MoreLineTextViewandroid:id="@+id/tv_more_line_long"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="@color/white"android:padding="@dimen/padding_small"app:clickAll="true"app:textColor="@color/red" /><View style="@style/spaceLine" /><com.wiggins.expandable.widget.expandable.ExpandableTextViewandroid:id="@+id/tv_expandable_long"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="@color/white"android:ellipsize="end"android:padding="@dimen/padding_small"android:textColor="@color/blue"app:allClickable="false"app:contentTextColor="@color/blue"app:isDisplayIcon="false"app:maxCollapsedLines="4" /></LinearLayout>2.Java⽂件调⽤private void initData() {mTvMoreLineShort.setText(Constant.content1);mTvExpandableShort.setText(Constant.content2);mTvMoreLineLong.setText(Constant.content3);mTvExpandableLong.setText(Constant.content4);}MoreLineTextView使⽤1.在attr.xml中定义属性<declare-styleable name="MoreTextStyle"><!--内容⼤⼩--><attr name="textSize" format="dimension" /><!--内容颜⾊--><attr name="textColor" format="color" /><!--内容默认最⼤⾏数--><attr name="maxLine" format="integer" /><!--展开/收起图标--><attr name="expandIcon" format="reference" /><!--展开/收起动画执⾏时间--><attr name="durationMillis" format="integer" /><!--可点击区域,默认展开/收起区域可点击--><attr name="clickAll" format="boolean" /></declare-styleable>2.是否显⽰折叠效果@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {super.onMeasure(widthMeasureSpec, heightMeasureSpec);// 如果没有变化,测量并返回if (!mRelayout || getVisibility() == View.GONE) {super.onMeasure(widthMeasureSpec, heightMeasureSpec);return;}mRelayout = false;super.onMeasure(widthMeasureSpec, heightMeasureSpec);// 内容区域初始显⽰⾏⾼mTvContent.setHeight(mTvContent.getLineHeight() * (mMaxLine > mTvContent.getLineCount() ? mTvContent.getLineCount() : mMaxLine)); mLlExpand.post(new Runnable() {@Overridepublic void run() {// 是否显⽰折叠效果mLlExpand.setVisibility(mTvContent.getLineCount() > mMaxLine ? View.VISIBLE : View.GONE);}});}3.设置显⽰内容/*** @Description 设置显⽰内容*/public void setText(String str) {mRelayout = true;mTvContent.setText(str);setVisibility(TextUtils.isEmpty(str) ? View.GONE : View.VISIBLE);}4.展开/收起动画@Overridepublic void onClick(View v) {if (mTvContent.getLineCount() <= mMaxLine) {return;}isExpand = !isExpand;mTvContent.clearAnimation();final int deltaValue;final int startValue = mTvContent.getHeight();if (isExpand) {deltaValue = mTvContent.getLineHeight() * mTvContent.getLineCount() - startValue;//计算要展开⾼度RotateAnimation animation = new RotateAnimation(0, 180, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); animation.setDuration(mDurationMillis);animation.setFillAfter(true);mIvExpand.startAnimation(animation);mTvExpand.setText(getContext().getString(R.string.collapse));} else {deltaValue = mTvContent.getLineHeight() * mMaxLine - startValue;//为负值,收缩的⾼度RotateAnimation animation = new RotateAnimation(180, 0, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); animation.setDuration(mDurationMillis);animation.setFillAfter(true);mIvExpand.startAnimation(animation);mTvExpand.setText(getContext().getString(R.string.expand));}Animation animation = new Animation() {protected void applyTransformation(float interpolatedTime, Transformation t) {//interpolatedTime:为当前动画帧对应的相对时间,值总在0-1之间,原始长度+⾼度差*(从0到1的渐变)即表现为动画效果mTvContent.setHeight((int) (startValue + deltaValue * interpolatedTime));}};animation.setDuration(mDurationMillis);mTvContent.startAnimation(animation);}ExpandableTextView使⽤1.在attr.xml中定义属性<declare-styleable name="ExpandableTextView"><!--内容默认最⼤⾏数,超过隐藏--><attr name="maxCollapsedLines" format="integer" /><!--展开/收起动画执⾏时间--><attr name="animDuration" format="integer" /><!--展开图⽚--><attr name="expandDrawable" format="reference" /><!--收起图⽚--><attr name="collapseDrawable" format="reference" /><!--内容颜⾊--><attr name="contentTextColor" format="color" /><!--内容⼤⼩--><attr name="contentTextSize" format="dimension" /><!--收起/展开颜⾊--><attr name="collapseExpandTextColor" format="color" /><!--收起/展开⼤⼩--><attr name="collapseExpandTextSize" format="dimension" /><!--收起⽂字--><attr name="textCollapse" format="string" /><!--展开⽂字--><attr name="textExpand" format="string" /><!--可点击区域,默认展开/收起区域可点击--><attr name="allClickable" format="boolean" /><!--是否显⽰展开/收起图标,默认显⽰--><attr name="isDisplayIcon" format="boolean" /><!--收起/展开位置,默认左边--><attr name="collapseExpandGrarity"><flag name="left" value="3" /><flag name="right" value="5" /></attr><!--收起/展开图标位置,默认右边--><attr name="drawableGrarity"><flag name="left" value="3" /><flag name="right" value="5" /></attr></declare-styleable>2.是否显⽰折叠效果@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {// 如果没有变化,测量并返回if (!mRelayout || getVisibility() == View.GONE) {super.onMeasure(widthMeasureSpec, heightMeasureSpec);return;}mRelayout = false;// Setup with optimistic case// i.e. Everything fits. No button neededmLlExpand.setVisibility(View.GONE);mTvContent.setMaxLines(Integer.MAX_VALUE);// Measuresuper.onMeasure(widthMeasureSpec, heightMeasureSpec);//如果内容真实⾏数⼩于等于最⼤⾏数,不处理if (mTvContent.getLineCount() <= mMaxCollapsedLines) {return;}// 获取内容tv真实⾼度(含padding)mTextHeightWithMaxLines = getRealTextViewHeight(mTvContent);// 如果是收起状态,重新设置最⼤⾏数if (mCollapsed) {mTvContent.setMaxLines(mMaxCollapsedLines);}mLlExpand.setVisibility(View.VISIBLE);// Re-measure with new setupsuper.onMeasure(widthMeasureSpec, heightMeasureSpec);if (mCollapsed) {// Gets the margin between the TextView's bottom and the ViewGroup's bottommTvContent.post(new Runnable() {@Overridepublic void run() {mMarginBetweenTxtAndBottom = getHeight() - mTvContent.getHeight();}});// 保存这个容器的测量⾼度mCollapsedHeight = getMeasuredHeight();}}3.设置显⽰内容/*** @Description 设置显⽰内容*/public void setText(CharSequence text) {mRelayout = true;mTvContent.setText(text);setVisibility(TextUtils.isEmpty(text) ? View.GONE : View.VISIBLE);}4.展开/收起动画@Overridepublic void onClick(View view) {if (mLlExpand.getVisibility() != View.VISIBLE) {return;}mCollapsed = !mCollapsed;// 修改收起/展开图标、⽂字setDrawbleAndText();// 保存位置状态if (mCollapsedStatus != null) {mCollapsedStatus.put(mPosition, mCollapsed);}// 执⾏展开/收起动画mAnimating = true;ValueAnimator valueAnimator;if (mCollapsed) {valueAnimator = new ValueAnimator().ofInt(getHeight(), mCollapsedHeight);} else {mCollapsedHeight = getHeight();valueAnimator = new ValueAnimator().ofInt(getHeight(), getHeight() + mTextHeightWithMaxLines - mTvContent.getHeight()); }valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {@Overridepublic void onAnimationUpdate(ValueAnimator valueAnimator) {int animatedValue = (int) valueAnimator.getAnimatedValue();mTvContent.setMaxHeight(animatedValue - mMarginBetweenTxtAndBottom);getLayoutParams().height = animatedValue;requestLayout();}});valueAnimator.addListener(new Animator.AnimatorListener() {@Overridepublic void onAnimationStart(Animator animator) {}@Overridepublic void onAnimationEnd(Animator animator) {// 动画结束后发送结束的信号,清除动画标志mAnimating = false;// 通知监听if (mListener != null) {mListener.onExpandStateChanged(mTvContent, !mCollapsed);}}@Overridepublic void onAnimationCancel(Animator animator) {}@Overridepublic void onAnimationRepeat(Animator animator) {}});valueAnimator.setDuration(mAnimationDuration);valueAnimator.start();}项⽬地址☞以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档