2012-02-21 123 views
16

我正在为平板电脑制作一个小应用程序,类似于显示标志。Android编辑文本对齐

我有几个显示标志中心对齐的文本元素。当我点击它时,它会转换为editText。我希望编辑文本的方式使其中的文本是居中对齐和内容包装。但是当我输入内容时,editText扩展了两种方式,保持文本与中心对齐。我想用右对齐的文本元素做同样的事情(唯一的区别是编辑文本只会向左扩展)。

当我试图做到这一点,现在它向left.This扩大是我摆出编辑文本元素

tempView=new EditText(this); 
((EditText) tempView).setTextSize(shrinkedFontSize); 
((EditText) tempView).setTypeface(tf); 
((EditText) tempView).setText(tempInput.getText());  
((EditText) tempView).setGravity(Gravity.CENTER); 
layout.addView(tempView, tempParams); 

我在布局设置布局的宽度WRAP_CONTENT代码参数。我也在编辑文本左上角的布局参数中指定了x和y。

有什么办法可以达到这个目的吗?

回答

35

这应该解决您的问题:

EditText t = (EditText) findViewById(R.id.text); 
t.setGravity(Gravity.CENTER); 

...在XML:

<EditText 
    android:id="@+id/text" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:inputType="text" /> 

它使EditText上inputField输入的文本水平居中。

您可以将layout_widthfill_parent更改为150 dp或任何其他尺寸,但不能更改wrap_content。文本将水平居中。

设置t.setGravity(Gravity.RIGHT);LEFT,使输入文本向左或向右对齐。

10

这是一个经过测试的更简单的解决方案。只需将android:gravity="center"添加到布局XML文件以将文本对齐到EditText的中心。无需更改Java代码。

<EditText 
    android:id="@+id/LastName" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/back" 
    android:inputType="numberDecimal" 
    android:gravity="center" />