android 字體間間隔,TextView設置行間距、字體間距

一、設置行間距

1、設置行間距:android:lineSpacingExtra,取值范圍:正數、負數和0,正數表示增加相應的大小,負數表示減少相應的大小,0表示無變化

2、設置行間距的倍數:android:lineSpacingMultiplier,取值范圍:浮點數,如果值大于1.0表示增加行間距,如果值小于1.0表示減少行間距,等于1.0時表示無變化。

有時候在UI界面會失效,可以在代碼動態設置

reuse_list_name.setLineSpacing(8,1);//第一個參數是字體大小,第二個是倍數

二、設置字體間距

setTextScaleX() 方法設置字間距,但從字面上(Scale)就可看出其實它是用于設置字體的縮放比率,并不正確

我們可以用通過繼承 TextView 并重寫?setText() 和?getText()?方法,增加?setLetterSpacing() 等方法搞定該需求。

/**

* 示例:設置 TextView 的字間距

* @author Pedro Barros (pedrobarros.dev at gmail.com)

* @since May 7, 2013

*/

import android.content.Context;

import android.text.Spannable;

import android.text.SpannableString;

import android.text.style.ScaleXSpan;

import android.util.AttributeSet;

import android.widget.TextView;

public class LetterSpacingTextView extends TextView {

private float letterSpacing = LetterSpacing.NORMAL;

private CharSequence originalText = "";

public LetterSpacingTextView(Context context) {

super(context);

}

public LetterSpacingTextView(Context context, AttributeSet attrs){

super(context, attrs);

}

public LetterSpacingTextView(Context context, AttributeSet attrs, int defStyle){

super(context, attrs, defStyle);

}

public float getLetterSpacing() {

return letterSpacing;

}

public void setLetterSpacing(float letterSpacing) {

this.letterSpacing = letterSpacing;

applyLetterSpacing();

}

@Override

public void setText(CharSequence text, BufferType type) {

originalText = text;

applyLetterSpacing();

}

@Override

public CharSequence getText() {

return originalText;

}

private void applyLetterSpacing() {

StringBuilder builder = new StringBuilder();

for(int i = 0; i < originalText.length(); i++) {

builder.append(originalText.charAt(i));

if(i+1 < originalText.length()) {

builder.append("\u00A0");

}

}

SpannableString finalText = new SpannableString(builder.toString());

if(builder.toString().length() > 1) {

for(int i = 1; i < builder.toString().length(); i+=2) {

finalText.setSpan(new ScaleXSpan((letterSpacing+1)/10), i, i+1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

}

}

super.setText(finalText, BufferType.SPANNABLE);

}

public class LetterSpacing {

public final static float NORMAL = 0;

}

}

應用例:

LetterSpacingTextView textView = new LetterSpacingTextView(context);

textView.setLetterSpacing(10); //參數為 float 類型。可另設其他值如 0 或者默認值 LetterSpacingTextView.LetterSpacing.NORMAL

textView.setText("My text");

//Add the textView in a layout, for instance:

((LinearLayout) findViewById(R.id.myLinearLayout)).addView(textView);

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/452507.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/452507.shtml
英文地址,請注明出處:http://en.pswp.cn/news/452507.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

破解mysql數據庫的密碼

發現的1小問題 語句打錯以后應該退出本語句,再繼續打新語句.也可以打\c,退出本語句. 如何破解數據庫的密碼: 1:通過任務管理器或者服務管理,關掉mysqld(服務進程) 2:通過命令行特殊參數開啟mysqld Mysqld --skip-grant-tables 3:此時,mysqld服務進程已經打開,并且,不需要權限檢…

Diango博客--6.Markdown 文章自動生成目錄

文章目錄0.思路引導1.在文中插入目錄2.在頁面的任何地方插入目錄3.美化標題的錨點 URL0.思路引導 Markdown 在解析內容的同時還可以自動提取整個內容的目錄結構&#xff0c;本文內容將從以下幾個方面展開&#xff1a; 1&#xff09;在文中插入目錄&#xff1b; 2&#xff09;在…

Java中對象和引用的理解

2019獨角獸企業重金招聘Python工程師標準>>> 偶然想起Java中對象和引用的基本概念&#xff0c;為了加深下對此的理解和認識&#xff0c;特地整理一下相關的知識點&#xff0c;通過具體實例從兩者的概念和區別兩方面去更形象的認識理解&#xff0c;再去記憶。12一、對…

android怎樣封裝,如何封裝屬于自己的博客網站安卓APP 源碼家園

說實話我今天在寫這個文章的時候是我使用易語言(E4A\易安卓)的第一天&#xff0c;我也是易小白&#xff0c;但是的確可以用&#xff01;我為什么寫這個文章呢&#xff1f;因為之前我也想封裝自己的網站&#xff0c;然后去網上找的在線封裝生成APP&#xff0c;果然能封裝好了&am…

程序員常犯的5個非技術性錯誤

一個好的軟件開發人員需要培養兩種技能&#xff1a;技術技能和非技術技能。不幸的是一些開發者只注重技術的部分&#xff0c;以致養成一些陋習&#xff0c;下面是最常犯的5個非技術性錯誤&#xff1a; 0. 缺乏自律 Jim Rohn曾經說過&#xff1a;自律是目標和成果之間的橋梁。我…

Redis進階實踐之二十 Redis的配置文件使用詳解

一、引言   寫完上一篇有關redis使用lua腳本的文章&#xff0c;就有意結束Redis這個系列的文章了&#xff0c;當然了&#xff0c;這里的結束只是我這個系列的結束&#xff0c;但是要學的東西還有很多。但是&#xff0c;好多天過去了&#xff0c;總是感覺好像還缺點什么…

web流程設計器 工作流的 整合視頻教程 activiti畫圖 SSM和獨立部署

本視頻為activiti工作流的web流程設計器整合視頻教程整合Acitiviti在線流程設計器(Activiti-Modeler 5.21.0 官方流程設計器&#xff09;本視頻共講了兩種整合方式1. 流程設計器和其它工作流項目分開部署的方式2. 流程設計器和SSM框架項目整合在一起的方式視頻大小 1.13 GB ~【…

Diango博客--7.自動生成文章摘要

文章目錄0.思路引導1.方法一&#xff1a;覆寫 save 方法2.方法二&#xff1a;使用 truncatechars 模板過濾器0.思路引導 博客文章的模型有一個 excerpt 字段&#xff0c;這個字段用于存儲文章的摘要。 若在 django admin 后臺手動為文章輸入摘要&#xff0c;每次手動輸入摘要…

android 增加觸摸范圍,android seekBar 增加點擊和滑動范圍

seekBar的的范圍有限&#xff0c;有時候設計師要求高度為4dp&#xff0c;此時范圍太小&#xff0c;很難滑動成功。因此&#xff0c;我們需要在不改變 UI 的前提下&#xff0c;增加點擊和滑動范圍。直接上代碼&#xff1a;public class MainActivity extends AppCompatActivity …

特斯拉股價暴跌,瘋狂燒錢是否真的能夠帶來高額回報?

“瘋狂燒錢”并不能成為公司持續虧損的理由&#xff0c;反而可能成為公司升級轉型的關鍵所在。 上周三&#xff0c;特斯拉發布第四季度財報&#xff0c;其后特斯拉CEO馬斯克在電話會議上表示&#xff0c;特斯拉虧損收窄&#xff0c;營收同比增長88%&#xff0c;但與此同時其首…

android gravity參數,Gravity - [ Android中文手冊 ] - 在線原生手冊 - php中文網

Gravity版本&#xff1a;Android 4.0 r1結構繼承關系public class Gravity extends Objectjava.lang.Objectandroid.view.Gravity類概述用來在一個更大容器中布置對象的標準常量和工具。常量public static final intAXIS_CLIP原始位控制右/底邊界是否被剪切到它的容器中&#x…

Diango博客--8.解鎖博客側欄

文章目錄0.思路引導1.[最新文章] 模板標簽2.[歸檔] 模板標簽3.[分類] 模板標簽4.[標簽云] 模板標簽5.使用自定義的模板標簽0.思路引導 博客側邊欄有四項內容&#xff1a;最新文章、歸檔、分類和標簽云&#xff0c;效果展示如下&#xff1a; 這些內容相對比較固定和獨立&…

十五、詳述 IntelliJ IDEA 插件的安裝及使用方法

正文 首先&#xff0c;進入插件安裝界面&#xff1a; Mac&#xff1a;IntelliJ IDEA -> Preferences -> Plugins;Windows&#xff1a;File -> Settings -> Plugins.標注 1&#xff1a;顯示 IntelliJ IDEA 的插件分類&#xff0c; All plugins&#xff1a;顯示 Inte…

編程巨星的唯一秘訣

別以為是那些軟件開發定律&#xff0c;別以為是開發出那些特殊用途的軟件&#xff0c;別以為是軟件設計技術本身。只有一條真理決定了一個軟件程序員的成功還是失敗。由于堅持這個真理&#xff0c;一個資深的程序員能在一天的時間里學會一門新的編程語言&#xff0c;而由于不堅…

面向數據流的設計方法

面向數據流的設計方法的目標是給出設計軟件結構的一個系統化的途徑。 在軟件工程的需求分析階段&#xff0c;信息流是一個關鍵考慮。通常用數據流圖描繪信息在系統中加工和流動的 情況。面向數據流的設計方法定義了一些不同的“映射”&#xff0c;利用這些映射可以把數據流圖…

AI研究的盲點:無解的神經網絡內在邏輯

論人工神經網絡內在邏輯的研究歷史及現狀。 伴隨著大數據&#xff0c;人工智能&#xff08;AI&#xff09;在沉寂了多年之后&#xff0c;又迎來了新的高潮。在這場涉及大部分科學的革命中&#xff0c;人工神經網絡釋放了人工智能&#xff08;AI&#xff09;。但科學家們發現&a…

Diango博客--9.歸檔、分類和標簽頁

文章目錄0.思路引導1.回顧2.歸檔頁面3.分類頁面4.標簽頁面0.思路引導 側邊欄已經正確地顯示了最新文章列表、歸檔、分類、標簽等信息&#xff0c;現在來完善歸檔、分類和標簽功能。 當用戶點擊歸檔下的某個日期、分類欄目下的某個分類或者標簽欄目下的某個標簽時&#xff0c;…

android studio1.2.6,1.2.2 使用Android Studio開發Android APP | 菜鳥教程

寫在前面本節將介紹如何使用Android Studio開發Android APP&#xff0c;和前面Eclipse ADT SDK搭建Android開發環境一樣&#xff0c;本節也只是介紹一些基本東西&#xff0c;深入的&#xff0c;比如快捷鍵&#xff0c;小技巧等會再另一篇文章中詳細地介紹&#xff01;1.下載A…

軟件工程中的啟發規則

1.改進軟件結構提高模塊獨立性 2. 模塊規模應該適中 3.深度、寬度、扇出和扇入都應適當 4.模塊的作用域應該在控制域之內 5.力爭降低模塊接口的復雜程度 6.設計單入口單出口的模塊 7.模塊功能應該可以預測