java 如何实现分散对齐_实现TextView 文字排版,分散两端对齐

参考:http://www.cnblogs.com/lcyty/p/3265335.html

方法一:使用HTML

TextView textview=(TextView)findViewbyId(R.id.text);

textview.setText(Html.fromHtml(page.getContent()));

方法二:用代码实现

直接上代码:

import android.app.Activity;

import android.database.Cursor;

import android.graphics.Point;

import android.graphics.Typeface;

import android.os.Bundle;

import android.util.DisplayMetrics;

import android.view.Display;

import android.view.Gravity;

import android.view.Menu;

import android.widget.TextView;

public class MainActivity extends Activity {

static Point size;

static float density;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Display display = getWindowManager().getDefaultDisplay();

size=new Point();

DisplayMetrics dm=new DisplayMetrics();

display.getMetrics(dm);

density=dm.density;

display.getSize(size);

TextView tv=(TextView)findViewById(R.id.textView1);

Typeface typeface=Typeface.createFromAsset(this.getAssets(), "Roboto-Medium.ttf");

tv.setTypeface(typeface);

tv.setLineSpacing(0f, 1.2f);

tv.setTextSize(10*MainActivity.density);

//some random long text

String myText=getResources().getString(R.string.my_text);

tv.setText(myText);

TextJustification.justify(tv,size.x);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

}

import java.util.ArrayList;

import android.graphics.Paint;

import android.text.TextUtils;

import android.widget.TextView;

public class TextJustification {

public static void justify(TextView textView,float contentWidth) {

String text=textView.getText().toString();

Paint paint=textView.getPaint();

ArrayListlineList=lineBreak(text,paint,contentWidth);

textView.setText(TextUtils.join(" ", lineList).replaceFirst("\\s", ""));

}

private static ArrayListlineBreak(String text,Paint paint,float contentWidth){

String [] wordArray=text.split("\\s");

ArrayListlineList = new ArrayList();

String myText="";

for(String word:wordArray){

if(paint.measureText(myText+" "+word)<=contentWidth)

myText=myText+" "+word;

else{

int totalSpacesToInsert=(int)((contentWidth-paint.measureText(myText))/paint.measureText(" "));

lineList.add(justifyLine(myText,totalSpacesToInsert));

myText=word;

}

}

lineList.add(myText);

return lineList;

}

private static String justifyLine(String text,int totalSpacesToInsert){

String[] wordArray=text.split("\\s");

String toAppend=" ";

while((totalSpacesToInsert)>=(wordArray.length-1)){

toAppend=toAppend+" ";

totalSpacesToInsert=totalSpacesToInsert-(wordArray.length-1);

}

int i=0;

String justifiedText="";

for(String word:wordArray){

if(i

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值