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

這種布局在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()方法中進行更復雜的處理。
Android性能優化之布局優化篇
怎樣才能寫出優秀的Android App,是每一個程序員追求的目標。那麼怎麼才能寫出一個優秀的App呢?相信很多初學者也會有這種迷茫。一句話來回答這個問題:細節很重要。今
兩分鐘學會Android平台NDK編程(無須Eclipse和cygwin,可使用命令行打包多個so)
之前在進行cocos2dx開發時,已經詳細介紹了如何將win32的c++代碼移植到Android平台,當再次回顧時,發現一些基礎的東西理解並不是很徹底,今
Android清理緩存功能實現
應用程序中可以查看應用程序的相關信息,其中有一個功能是清除緩存。如圖: 怎麼實現這些功能呢,從Android的setting源碼中可以得到相關信息。 實現如下:
Windows下獲取Android 源碼方法的詳解
前言:略!獲取源碼的原因千千萬~~~ 1.安裝GIT工具。GIT是林納斯·托瓦茲大神為了管理器Linux內核開發而創立的分布式版本控制軟件。下載地址:http: