日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Code-Snippet】TextView

發布時間:2023/11/29 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Code-Snippet】TextView 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. TextView文字過長,顯示省略號

【參考】

必須要同時設置XML和JAVA,而且,java中設置文字必須是在最后。

android:ellipsize="start|end|middle" //省略號的位置 android:singleLine="true" android:lines="2" //行數 復制代碼tv.setEllipsize(TextUtils.TruncateAt.valueOf("END")); tv.setSingleLine(true); tv.setEllipsize(null); // 展開 tv.setEllipsize(TextUtils.TruncateAt.END); // 收縮 tv.setText(""); 復制代碼

2. TextView文字中間加橫線

【參考】

tv_goods_price = (TextView) v.findViewById(R.id.tv_goods_price); tv_goods_price.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG); //底部加橫線: tv_goods_price.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG); 復制代碼

3. 設置Drawable,改變大小

Java代碼中設置Drawable,而且可以設置大小,通過drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight()):

Drawable drawable= getResources().getDrawable(R.drawable.gray_circle); drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight()); //設置大小textView.setCompoundDrawables(drawable, null, null, null); //左上右下 textView.setCompoundDrawablePadding(4);//設置圖片和text之間的間距 復制代碼

4. 設置字體大小

xml中直接寫單位即可:

使用android:textSize屬性設置,例如 android:textSize="15sp" 復制代碼

代碼中:

1.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15); //單位最好使用SP 2.btnFind.setTextSize(TypedValue.COMPLEX_UNIT_SP,getResources().getDimension(R.dimen.home_top_txt_selected)); 復制代碼

SP和DP的差別,SP可以隨系統設置的字體大小而改變。如果不想隨系統字體大小的改變而改變,可以用DP去聲明。

5. 文本顯示可點擊鏈接,部分字體變色,下劃線

1)普通的網頁,郵箱地址等

原生有一個字段,autoLink,

autoLink 一共有六個值 :web phone map email all none 分別是url鏈接 電話號碼提取撥號 地圖地址 電子郵件 all是能夠支持超鏈接的全部都起作用 最后一個就是都不起作用

<TextViewandroid:id="@+id/tv1"android:text="hello, this is http://www.baidu.com, and my email is 974920378@qq.com"android:autoLink="web|email"android:layout_margin="10dp"android:layout_centerHorizontal="true"android:layout_width="wrap_content"android:layout_height="wrap_content" /> 復制代碼

效果就如下:

原生就是好,直接點擊,會默認跳到瀏覽器,默認的郵件app等等,但是,好像不能改!雖然說方便,但是諸多不便,有人就吐槽過了 TextView autoLink小技巧 - 從源碼的角度理解并解決autoLink的所有大坑:

  • 這超鏈接網址字體顏色和TextView設置的字體顏色根本不一致啊
  • 這個自帶的下劃線好煩人,不想要
  • 我想點擊網址跳轉到我自己應用內的WebView打開而不是用手機的瀏覽器
  • 和TextView長按事件有沖突,每次onLongClick后都會帶出一發超鏈接網址的onClick,在onLongClick里返回什么都沒用。
  • 2)SpannableString 實現可點擊超鏈接效果

    參考:TextView SpannableString 使用之實現可點擊超鏈接效果

    TextView textView2 = (TextView) findViewById(R.id.tv2); String clickString = "I Love Android!"; SpannableString spannableString =new SpannableString(clickString); //設置點擊的位置,為 position[2,6), // 第二個字符開始到第6個字符,前開后閉 spannableString.setSpan(new ClickableSpan() {@Overridepublic void onClick(@NonNull View widget) {Toast.makeText(TextViewActivity.this,"Love",Toast.LENGTH_SHORT).show();} },2,6,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); textView2.setText(spannableString); textView2.setMovementMethod(LinkMovementMethod.getInstance()); 復制代碼

    以上基本實現了,還可以使用 spannable是設置某些字的顏色,大小,下劃線等等,參考:使用SpannableString設置部分文字大小、顏色、超鏈接、點擊事件

    TextView textView3 = (TextView) findViewById(R.id.tv3); String content = "This is a test, you can click baidu or youku."; SpannableString ss = new SpannableString(content); //設置網絡超鏈接 ss.setSpan(new URLSpan("http://www.baidu.com"),content.indexOf("baidu"), content.indexOf(" or"),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); ss.setSpan(new URLSpan("http://www.youku.com"),content.indexOf("youku"), ss.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //設置字體顏色 ss.setSpan(new ForegroundColorSpan(Color.parseColor("#ff0000")),content.indexOf("baidu"), content.indexOf(" or"),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); ss.setSpan(new ForegroundColorSpan(Color.parseColor("#ff00ff")),content.indexOf("youku"), ss.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // 設置字體大小 ss.setSpan(new AbsoluteSizeSpan(sp2px(this, 25)),content.indexOf("baidu"), content.indexOf(" or"),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); ss.setSpan(new AbsoluteSizeSpan(sp2px(this, 30)),content.indexOf("youku"), ss.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // 取消下劃線 ss.setSpan(new UnderlineSpan() {@Overridepublic void updateDrawState(@NonNull TextPaint textPaint) {textPaint.setUnderlineText(false);}},content.indexOf("youku"), ss.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); textView3.setText(ss); textView3.setMovementMethod(LinkMovementMethod.getInstance()); 復制代碼

    這里設置的網絡鏈接沒有傳入一個點擊事件,所以默認就是跳轉到默認瀏覽器。

    3)SpannableStringBuilder 實現多種效果疊加

    TextView textView4 = (TextView) findViewById(R.id.tv4); final String linkWord1 = "Android"; final String linkWord2 = "Are you ok?"; final String linkWord3 = "think you!"; String word = "Hello " + linkWord1 + "," + linkWord2 + " I'm fine," + linkWord3; SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(word); int index1 = word.indexOf(linkWord1); int index2 = word.indexOf(linkWord2); int index3 = word.indexOf(linkWord3); spannableStringBuilder.setSpan(new ClickableSpan() {@Overridepublic void onClick(@NonNull View widget) {Toast.makeText(TextViewActivity.this, linkWord1, Toast.LENGTH_SHORT).show();}@Overridepublic void updateDrawState(@NonNull TextPaint ds) {super.updateDrawState(ds);ds.setColor(Color.RED); //設置文件顏色ds.setUnderlineText(true); //設置下劃線} }, index1, index1 + linkWord1.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); spannableStringBuilder.setSpan(new ClickableSpan() {@Overridepublic void onClick(@NonNull View widget) {Toast.makeText(TextViewActivity.this, linkWord2, Toast.LENGTH_SHORT).show();}@Overridepublic void updateDrawState(@NonNull TextPaint ds) {super.updateDrawState(ds);ds.setColor(Color.GREEN); //設置文件顏色ds.setUnderlineText(false); //設置下劃線} }, index2, index2 + linkWord2.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); spannableStringBuilder.setSpan(new ClickableSpan() {@Overridepublic void onClick(@NonNull View widget) {Toast.makeText(TextViewActivity.this, linkWord3, Toast.LENGTH_SHORT).show();}@Overridepublic void updateDrawState(@NonNull TextPaint ds) {super.updateDrawState(ds);ds.setColor(Color.BLUE); //設置文件顏色ds.setUnderlineText(false); //設置下劃線} }, index3, index3 + linkWord3.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); textView4.setTextSize(14); textView4.setText(spannableStringBuilder); textView4.setMovementMethod(LinkMovementMethod.getInstance()); 復制代碼

    6. 設置字體

    1)系統默認字體

    <TextView Android:id="@+id/serif" # sans,monospace #Android:text="Hello,World"Android:typeface="serif"Android:textSize="20sp" /> 復制代碼

    2)自定義字體

    在Android中可以引入其他字體,將字體文件保存在 app/src/main/assets/fonts/ 目錄下,然后在Java中引入:

    //得到TextView控件對象 TextView textView =(TextView)findViewById(R.id.custom); //將字體文件保存在assets/fonts/目錄下,創建Typeface對象 Typeface typeFace =Typeface.createFromAsset(getAssets(),"fonts/HandmadeTypewriter.ttf"); //使用字體 textView.setTypeface(typeFace); 復制代碼

    或者在XML中設置,字體同樣放置一樣的目錄,

    <style name="TextAppearanceLarg" parent="TextAppearance.AppCompat.Large"><!-- Custom Attr--><item name="fontPath">fonts/title.ttf</item> </style> 復制代碼

    最后在XML中,TextView中引用:android:textAppearance="@style/TextAppearanceLarg"

    7. 設置字體顏色

    xml設置單一顏色:

    <TextView android:textColor="#fff"/> <TextView android:textColor="@android:color/white"/> 復制代碼

    設置點擊的時候,顏色變化

    <TextViewandroid:textColor="@drawable/item_track_txt_color_selector"android:layout_height="55dp" />//item_track_txt_color_selector <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" ><item android:state_pressed="true" android:color="#cecbcb"/><item android:color="#FFFFFF"/> </selector> 復制代碼

    java中設置顏色:

    textView.setTextColor(Color.rgb(255,238,2)); textView.setTextColor(getContext().getColor(R.color.arrow_white));//API23及以上可以用 //或者 textView.setTextColor(getContext().getResources().getColor(R.color.voice_collect_0)); //設置點擊的時候,顏色變化 textView.setTextColor(getContext().getResources().getColorStateList(R.drawable.item_track_txt_color_selector)); 復制代碼

    8. 設置陰影效果

    android:shadowColor="#dc1818" # 陰影的顏色 android:shadowDx="10" # 水平方向的偏移量,就是水平方向陰影開始的橫坐標位置,像素 android:shadowDy="10" # 垂直方向的偏移量,就是豎直方向陰影開始的縱坐標位置,像素 android:shadowRadius="3.0" # 陰影的半徑大小 復制代碼

    對應的java方法是:

    public void setShadowLayer (float radius, float dx, float dy, int color) 復制代碼

    而且,xml中要設置了顏色后,其他屬性才能生效

    dx,dy分別為(0,0),(5,5),(20,20):

    shadowRadius分別為 1,5,10,越大越模糊:

    9. 跑馬燈效果

    文本過長的時候,要求用滾動播放的形式顯示,也就是跑馬燈的效果。

    XML:android:ellipsize="marquee"android:maxLines="1"android:marqueeRepeatLimit="marquee_forever" JAVA:TextView textView = (TextView) xHolder.getViewById(R.id.txt_title);textView.setText("dfsd");textView.setSingleLine();textView.setSelected(true); 復制代碼

    注意:以上必須同時設置!

    轉載于:https://juejin.im/post/5c8a2c1e6fb9a049d05e9b34

    總結

    以上是生活随笔為你收集整理的【Code-Snippet】TextView的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 免费萌白酱国产一区二区三区 | 日本在线一级片 | 手机在线观看毛片 | 亚洲久草视频 | 绿帽单男 | 黄色va| 亚洲v天堂 | 亚洲黄色网页 | 精品美女久久久久 | 97caoporn| 热99在线观看 | 精品视频久久 | 级毛片 | 国产精品v欧美精品v日韩精品 | 大黄网站在线观看 | 国产第八页 | 精品一区二区三区免费视频 | 亚洲综合射 | 欧美资源在线观看 | 久久激情婷婷 | 小明成人免费视频 | 国产在线视频你懂的 | 国产成人啪一区二区 | 玖玖爱国产 | 羞羞成人 | 日韩在线精品强乱中文字幕 | 伊人久久五月天 | 国产αv| 少妇无套高潮一二三区 | 亲切的金子餐桌片段的金子 | 第四色成人网 | 可以免费看的av毛片 | 日本九九热 | 在线视频h | 国产高清视频免费 | 国产欧美综合在线 | 99久久久无码国产精品性 | 亚洲天堂导航 | av动漫免费观看 | 日本中文字幕在线观看视频 | 日韩精品一区二区不卡 | 神马午夜一区二区 | 亚洲一区二区三区四区五区xx | 可以看av| 九久久久久 | 午夜在线视频观看 | 成人福利av| 综合久久久久久 | 天堂网av2014| 久久久久久av无码免费网站 | 经典三级第一页 | 97干干| 欧美三级午夜理伦三级中视频 | 一级全黄裸体免费视频 | 亚洲综合一区在线观看 | 久久久久久久久久99 | 国产无套视频 | 超碰97人人射妻 | 天天干免费视频 | 粉嫩av一区二区三区 | 一本一道波多野结衣一区二区 | 国产精品电影网 | 午夜影院免费视频 | 极品新婚夜少妇真紧 | 日本性生活一级片 | 黄色免费网页 | 日韩av片免费观看 | 日韩精品h | 成人福利一区二区 | 就爱操av| 欲求不满在线小早川怜子 | 99久 | 在线观看成人黄色 | 善良的女朋友在线观看 | 国产精品传媒在线观看 | 国产偷人爽久久久久久老妇app | 婷婷色网站| 老司机在线免费视频 | 制服诱惑一区二区三区 | 极品色综合 | 97综合视频 | 99福利视频 | 伊人久久精品一区二区三区 | 2017天天干| 亚洲av无码片一区二区三区 | 黄色网页大全 | 欧美中文字幕一区二区三区 | 操操综合 | 97久久久| 每日在线观看av | 双性娇喘浑圆奶水h男男漫画 | 午夜激情成人 | 国产福利一区在线 | 青青色在线观看 | 亚洲一区成人 | 一区国产视频 | 在线视频欧美日韩 | 干爹你真棒插曲mv在线观看 | 中文字幕欧美一区 |