ppt如何使文本框对齐在 Android TextView 向右对齐

本帖子已过去太久远了,不再提供回复功能。更新到Andrid4.1之后的版本,textView如果设置了右对齐,一部分内容被截掉不显示。 -
- ITeye技术网站
最近在做多机种测试。在一个TextView显示一些内容,譬如文字或者数字,有一些机种正常表示,有一些机种内容的右边一点点会被截掉。譬如1000,最右边的“0”的一半被截掉了似的。查看layout代码,也没有什么问题。究竟是怎么回事儿?
有问题的都是android4.0以上的机种。
有知道的人告诉一下可以吗。
补充,网上查了查,发现是os更新到4.1之后会发生如题的问题。请问有人知道是android更新之后的内容变化,还是os自己产生的bug阿?
坐求有人一起来解决这个问题。thx
有问题的安卓机型(参考):
SH-07E(4.2.2)
N-06E(4.2.2)
P-03E(4.2.2)
SH-06E(4.2.2)
SH-02E(4.1.2)
L-01E(4.1.2)
L-05D(4.1.2)
论坛回复 /
(9 / 3967)
浏览: 1862 次
来自: 成都Android TextView显示文字对齐
有时候利用android的TextView显示中文跟数字的组合会对不齐,如下面截图,文字还没有到达屏幕右边就开始换行了
为了解决这个文字,自己子定义了一个TextView的子类来实现,具体步骤如下:
1.自定义AlignTextView继承TextView
import android.content.C
import android.content.res.TypedA
import android.graphics.C
import android.graphics.C
import android.graphics.P
import android.text.TextU
import android.util.AttributeS
import android.widget.TextV
import java.util.ArrayL
* Created by crab on 15-3-16.
* 解决中文跟数字在一起的是时候textView显示不正确问题
public class AlignTextView extends TextView {
private float mLineGap = 0.0f;
private Paint mP
private ArrayList mTexts = new ArrayList();
public AlignTextView(Context context) {
super(context);
public AlignTextView(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.AlignTextView);
mLineGap = typedArray.getDimension(R.styleable.AlignTextView_lineSpacingExtra, 0.0f);
float textSize = typedArray.getDimension(R.styleable. AlignTextView_textSize, 24.0f);
int textColor = typedArray.getColor(R.styleable. AlignTextView_textColor, Color.WHITE);
// 构建paint对象
mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setColor(textColor);
mPaint.setTextSize(textSize);
typedArray.recycle();
public AlignTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.AlignTextView);
mLineGap = typedArray.getDimension(R.styleable.AlignTextView_lineSpacingExtra, 0.0f);
float textSize = typedArray.getDimension(R.styleable. AlignTextView_textSize, 24.0f);
int textColor = typedArray.getColor(R.styleable. AlignTextView_textColor, Color.WHITE);
// 构建paint对象
mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setColor(textColor);
mPaint.setTextSize(textSize);
typedArray.recycle();
private void init() {
mTexts.clear();
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int width = MeasureSpec.getSize(widthMeasureSpec);
String text = getText().toString();
if (!TextUtils.isEmpty(text)) {
mTexts.clear();
int iStart = 0;
int w = 0;
int line = 0;
Paint paint=mP
for (int i = 0; i & text.length(); i++) {
char ch = text.charAt(i);
float[] charWidth = new float[1];
String charStr = String.valueOf(ch);
paint.getTextWidths(charStr, charWidth);
if (ch == '\n') {
String subText = text.substring(iStart, i);
mTexts.add(line, subText);
iStart = i + 1;
w += ((int) Math.ceil(charWidth[0]));
if (w & width) {
String subText = text.substring(iStart, i);
mTexts.add(line, subText);
if (i == text.length() - 1) {
String subText = text.substring(iStart, i+1);
mTexts.add(line, subText);
Paint.FontMetrics fontMetrics=paint.getFontMetrics();
float fontHeight=fontMetrics.bottom-fontMetrics.
int size=mTexts.size();
float textHeight=0.0f;
for(int i=0;i2.res/values/attrs.xml文件中增加如下属性
3.在布局文件中使用自定义的View设置TextView文字居中,代码实现android:layout_gravity - Cynthia&Sky - 博客园
随笔 - 395, 文章 - 0, 评论 - 0, 引用 - 0
设置TextView文字居中
android:gravity指的是控件的位置
而android:layout_gravity指的是这个layout的,是外面的
有2种方法可以设置TextView文字居中:一:在xml文件设置:android:gravity="center"二:在程序中设置:m_TxtTitle.setGravity(Gravity.CENTER);备注:android:gravity和android:layout_gravity的区别在于前者对控件内部操作,后者是对整个控件操作。
例如:android:gravity="center"是对textView中文字居中android:layout_gravity="center"是对textview控件在整个布局中居中其实很容易理解,出现"layout"就是控件对整个布局的操作
设置TextView文字居中一般使用如下:
android:layout_width="fill_parent"&&&&&&&&&&&&& 注意这里声明要为match_parentandroid:layout_height="fill_parent"android:gravity="center"
代码实现android:layout_gravity
通过查看SDK,发现有一个setGravity方法, 顾名思义, 这个应该就是用来设置Button组件中文字的对齐方式的方法了。仔细找了一圈,没有发现setLayoutgravity方法,有点失望。 不过想想也对,如果这边有了这个方法,将Button放在不支持Layout_Gravity属性的Container中如何是好!
代码比较简单,但是发现它们还是花了我一点时间的
Button button
= new Button(this);
button.setText("One");
//此处相当于布局文件中的Android:layout_gravity属性
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
lp.gravity = Gravity.RIGHT;
button.setLayoutParams(lp);
//此处相当于布局文件中的Android:gravity属性
button.setGravity(Gravity.CENTER);
LinearLayout linear = new LinearLayout(this);
//注意,对于LinearLayout布局来说,设置横向还是纵向是必须的!否则就看不到效果了。
linear.setOrientation(LinearLayout.VERTICAL);
linear.addView(button);
setContentView(linear);
另外,要设置在RelativeLayout中的位置时使用addRule方法,如下:
params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.CENTER_IN_PARENT);
mContainer.addView(progress,params);

我要回帖

更多关于 css文本向右对齐 的文章

 

随机推荐