Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 初級開發 >> Android 開發TextView 部分字符高亮

Android 開發TextView 部分字符高亮

編輯:初級開發

TextVIEw 部分字體高

[功能]

TextVIEw是不支持部分字段高亮的 但是我們可以進行擴展

[思路]

1. 利用LinearLayout 作為 TextVIEw 的 容器

2. 字符串中每個字都使用一個TextVIEw顯示之

3. 還可以使用*.9.png來作為所有TextVIEw的背景 使之看上去成為整體

[思路 步驟]

1. 定義TextSelectionHelper 構造函數 傳入 Activity上下文 及 子VIEw對齊方式 以及 layout_width layout_height

Java代碼

public class TextHighlightHelper{

Activity activity;

LinearLayout lLayout;

public TextHighlightHelper(Activity a,int l){

activity = a;

lLayout = new LinearLayout(activity);

lLayout.setOrIEntation(l);

lLayout.setLayoutParams(

new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT));

}

}

public class TextHighlightHelper{

Activity activity;

LinearLayout lLayout;

public TextHighlightHelper(Activity a,int l){

activity = a;

lLayout = new LinearLayout(activity);

lLayout.setOrIEntation(l);

lLayout.setLayoutParams(

new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT));

}

}

2. 定義函數 用於接收字符串

Java代碼

//之所以每個字符都分別用一個TextVIEw顯示之 因為這樣做 會使得後面顏色設定非常容易

public void addText(CharSequence cs){

for(int i=0;i< p>

TextView tv = new TextVIEw(activity);

tv.setText(cs.charAt(i)+"");

lLayout.addVIEw(tv);

}

}

//之所以每個字符都分別用一個TextVIEw顯示之 因為這樣做 會使得後面顏色設定非常容易

public void addText(CharSequence cs){

for(int i=0;i< p>

TextView tv = new TextVIEw(activity);

tv.setText(cs.charAt(i)+"");

lLayout.addVIEw(tv);

}

}

3. 設定 部分字符 顏色

Java代碼

//函數解釋: 從s開始 選取l個字符 顏色都設定為i

public void addColor(int s,int l,int c){

if(l > lLayout.getChildCount()){

//error argument

}

else {

for(int i=s;i< p>

TextView item = (TextVIEw)lLayout.getChildAt(i);

item.setTextColor(c);

}

}

}

//函數解釋: 從s開始 選取l個字符 顏色都設定為i

public void addColor(int s,int l,int c){

if(l > lLayout.getChildCount()){

//error argument

}

else {

for(int i=s;i< p>

TextView item = (TextVIEw)lLayout.getChildAt(i);

item.setTextColor(c);

}

}

}

4. 設定所有字符的背景 最好使用*.9.png 資源 因為長度可變

Java代碼

public void addBackResource(int r){

lLayout.setBackgroundResource(r);

}

public void addBackResource(int r){

lLayout.setBackgroundResource(r);

}

5. 得到整個LinearLayout 並供使用

Java代碼

public View loadVIEw(){

return lLayout;

}

public View loadVIEw(){

return lLayout;

}

6. 如何使用TextSelectionHelper

* TextHighlightUsage 的布局 並定義最外層的id

Java代碼

< ?XML version="1.0" encoding="utf-8"?>

< LinearLayout XMLns:android="http://schemas.android.com/apk/res/android"

android:orIEntation="vertical"

android:id="@+id/layout"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

< TextVIEw

android:text="HelloText1"

android:layout_width="fill_parent"

android:layout_height="wrap_content" />

< /LinearLayout>

< ?XML version="1.0" encoding="utf-8"?>

< LinearLayout XMLns:android="http://schemas.android.com/apk/res/android"

android:orIEntation="vertical"

android:id="@+id/layout"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

< TextVIEw

android:text="HelloText1"

android:layout_width="fill_parent"

android:layout_height="wrap_content" />

< /LinearLayout>

* 具體使用:

Java代碼

public class TextHighlightUsage extends Activity {

TextHighlightHelper tHelper1;

TextHighlightHelper tHelper2;

LinearLayout ll;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentVIEw(R.layout.main);

ll = (LinearLayout)findVIEwById(R.id.layout);

//Text:HelloText2

CharSequence c1 = "HelloText2";

tHelper1 = new TextHighlightHelper(this,LinearLayout.HORIZONTAL);

tHelper1.addText(c1);

tHelper1.addColor(0, 3, Color.RED);

tHelper1.addBackResource(R.drawable.dot);

ll.addView(tHelper1.loadVIEw());

//Text:創新源於模仿!

CharSequence c2 = "創新源於模仿!";

tHelper2 = new TextHighlightHelper(this,LinearLayout.VERTICAL);

tHelper2.addText(c2);

tHelper2.addColor(1, 3, Color.RED);

ll.addView(tHelper2.loadVIEw());

}

}

public class TextHighlightUsage extends Activity {

TextHighlightHelper tHelper1;

TextHighlightHelper tHelper2;

LinearLayout ll;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentVIEw(R.layout.main);

ll = (LinearLayout)findVIEwById(R.id.layout);

//Text:HelloText2

CharSequence c1 = "HelloText2";

tHelper1 = new TextHighlightHelper(this,LinearLayout.HORIZONTAL);

tHelper1.addText(c1);

tHelper1.addColor(0, 3, Color.RED);

tHelper1.addBackResource(R.drawable.dot);

ll.addView(tHelper1.loadVIEw());

//Text:創新源於模仿!

CharSequence c2 = "創新源於模仿!";

tHelper2 = new TextHighlightHelper(this,LinearLayout.VERTICAL);

tHelper2.addText(c2);

tHelper2.addColor(1, 3, Color.RED);

ll.addView(tHelper2.loadVIEw());

}

}

7. emulator 運行截圖:

至於其能不能滿足需求 見仁見智了 大家可以參考截圖

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved