Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android自定義換行居中CenterTextView

android自定義換行居中CenterTextView

編輯:關於Android編程

在我們開發app時,TextView一定是使用最多的控件了,android自帶的TextView的功能也十分強大,但還是有些小的地方不能滿足我們的需求,幾天要說的這個功能也是開發中很常見的,就是,在我們顯示一段超過屏幕寬度的 String時,TextView會自動換行,但系統默認的換行效果是頂起,而不是美工要求的居中。這時候,就需要我們對系統的TextView做一些改造,已使得換行後文字能夠居中顯示。

先看下效果圖:

height=401

這種布局在IOS上很容易就實現了,android還的自定義一個View.

思路:在看android.text包中的源碼時,發現幾個從來沒用到的類,包括:Layout,StaticLayout,DeynamicLayout等幾個類,百度後得知這幾個類的大概作用:

這三個Layout,就是用來對android的CharSequence及其子類進行布局的,為其傳入不同的Alignment,就按照不同的Alignment去處理。代碼很簡單,只要從寫TextView即可,代碼如下:

package com.example.materialdesigndemo;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.text.Layout.Alignment;
import android.text.StaticLayout;
import android.text.TextPaint;
import android.util.AttributeSet;
import android.widget.TextView;

/**********************************************************
 * @文件名稱:CenterTextView.java
 * @文件作者:rzq
 * @創建時間:2015年7月2日 上午10:12:16
 * @文件描述:換行居中顯示TextView
 * @修改歷史:2015年7月2日創建初始版本
 **********************************************************/
public class CenterTextView extends TextView
{
	private StaticLayout myStaticLayout;
	private TextPaint tp;

	public CenterTextView(Context context, AttributeSet attrs)
	{
		super(context, attrs);
	}

	@Override
	protected void onSizeChanged(int w, int h, int oldw, int oldh)
	{
		super.onSizeChanged(w, h, oldw, oldh);
		initView();
	}

	private void initView()
	{
		tp = new TextPaint(Paint.ANTI_ALIAS_FLAG);
		tp.setTextSize(getTextSize());
		tp.setColor(getCurrentTextColor());
		myStaticLayout = new StaticLayout(getText(), tp, getWidth(), Alignment.ALIGN_CENTER, 1.0f, 0.0f, false);
	}

	@Override
	protected void onDraw(Canvas canvas)
	{
		myStaticLayout.draw(canvas);
	}
}
使用:


    

    

 

代碼很簡單,基本只需要重寫onDraw()方法,讓StaticLayout的實例去重新處理一下即可。這樣處理後弊端就是,我們的CenterTextView只能顯示文字,無法再顯示drawableLeft等,如果需要,就需要在onDraw()方法中進行更復雜的處理。

 

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