我正在为平板电脑制作一个小应用程序,类似于显示标志。
我有几个文本元素在显示符号中居中对齐。当我点击它时,它会转换为editText。我希望编辑文本的方式使其中的文本居中对齐并包含内容。但是当我输入内容时,editText会扩展两种方式,使文本与中心保持对齐。我想用右对齐的文本元素做同样的事情(唯一的区别是编辑文本只会向左扩展)。
当我现在尝试这样做时,它向左扩展。这是我用于布置编辑文本元素的代码
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。
有没有办法实现这个目标?
答案 0 :(得分:38)
这可以解决您的问题:
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_width
从fill_parent
更改为150 dp或任何其他尺寸,但不能更改wrap_content
。文本将水平居中。
设置t.setGravity(Gravity.RIGHT);
或LEFT
,使输入的文字左对齐或右对齐。
答案 1 :(得分:14)
这是一个经过测试的简单解决方案。只需将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" />