17

在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>

我想要的是:

这就是我要的

我用上面的代码得到了什么(没有光标的空编辑文本):

edittext 不显示提示文本并且没有闪烁的光标

4

6 回答 6

46

我终于找到了让它工作的解决方案。这个 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>
于 2011-06-09T11:59:11.210 回答
5

希望还不算太晚。我遇到了这个问题,我不知道每个设备是否都相同,但EditText 默认情况下它似乎有底部填充

尽管将重力设置为,但我的 EditText 文本值似乎总是略高于中心,CENTER因此我另外设置了:

myEditText.setPadding(0, 0, 0, 0);

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

于 2015-05-20T15:53:46.913 回答
4

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

编辑 :

<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>
于 2011-05-26T09:04:10.300 回答
1

I tried a combination of gravities :

android:gravity="top|center_horizontal"

My previous attempt was to nest the EditText inside a RelativeLayout and set it to center but it did not look that good , this way works best for me.

于 2012-05-01T08:32:22.400 回答
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" />

爪哇:

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);
                }
            }
        });
于 2017-02-22T13:39:45.957 回答
-1

不要在样式标签中添加重力,而是在您的布局文件中添加它,这将起作用

于 2011-05-26T09:08:43.073 回答