Android:带重力中心的Edittext无法在设备上运行

时间:2011-05-26 09:00:19

标签: android cursor android-edittext gravity

在Android中,我使用单行edittext,重力设置为居中。在模拟器中,这个功能很好,提示和闪烁的光标都显示出来。在设备上测试(Xperia X10)时,提示文本和闪烁光标都不会显示。闪烁的光标仅显示我是否在编辑文本中输入了一些文本。

这是我的编辑文本,任何人都可以看到是否缺少某些内容?

<LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:layout_gravity="center"
>
<EditText 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:inputType="numberDecimal" 
    android:ellipsize="end" 
    android:maxLines="1"
    android:gravity="center" 
    android:layout_gravity="center"
    android:hint="Some hint text"
></EditText>
</LinearLayout>

我想要的是什么:

This is what I want

上面的代码(没有光标的空edittext):

The edittext doesn't show the hint text and have no blinking cursor

6 个答案:

答案 0 :(得分:44)

我终于找到了让它运转的解决方案。这个EditText适合我:(在索尼爱立信X10和HTC Wildfire上测试)

<EditText 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:inputType="numberDecimal" 
    android:digits="0123456789.,"
    android:ellipsize="start" 
    android:maxLines="1"
    android:gravity="center"
    android:hint="Some hint text"
></EditText>

答案 1 :(得分:4)

我认为,您应该将EditText的parentLayout 重力设置为 center

编辑:

<LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center_horizontal" 
    android:id="@+id/linearLayout">

   <EditText 
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:inputType="numberDecimal" 
       android:ellipsize="end" 
       android:maxLines="1"
       android:hint="Some hint text"/>
</LinearLayout>

答案 2 :(得分:4)

希望现在还为时不晚。我遇到了这个问题而且我不知道每个设备是否相同,但默认情况下显示CENTER 底部填充

尽管将重力设置为myEditText.setPadding(0, 0, 0, 0); ,我的EditText文本值似乎总是略高于中心,所以我另外设置:

{{1}}

这为我修复了它,现在我的EditText完全居中:D

答案 3 :(得分:0)

我尝试了一系列重力:

android:gravity="top|center_horizontal"

我之前的尝试是将EditText嵌套在RelativeLayout中并将其设置为居中但看起来不那么好,这种方式最适合我。

答案 4 :(得分:0)

  • 在XML文件中,为设置提示添加重力CENTER_HORIZONTAL center.CURSORVISIBLE = false因此首先单击时光标不可见 时间
  • 在java中使用addTextChangedListener,当用户添加文本时 将重力改为左侧,也可见光标。

XML:

<EditText android:id="@+id/email"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:hint="EMAIL"
  android:textStyle="bold"
  android:gravity="center_horizontal"
  android:inputType="textEmailAddress"
  android:layout_margin="10dp"
  android:cursorVisible="false" />

JAVA:

email.addTextChangedListener(new TextWatcher() 

{

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void afterTextChanged(Editable s) {
                if (s.length() > 0) {
                    // position the text type in the left top corner
                    email.setGravity(Gravity.LEFT | Gravity.TOP);
                    email.setCursorVisible(true);
                }
                else
                {
                    // no text entered. Center the hint text.
                    email.setGravity(Gravity.CENTER);
                    email.setCursorVisible(false);
                }
            }
        });

答案 5 :(得分:-1)

而不是在样式标记中添加重力,而不是在你的布局文件中添加它将起作用