簡體   English   中英

Android:帶有重心的Edittext在設備上不起作用

[英]Android: Edittext with gravity center not working on device

在 Android 中,我使用單行編輯文本,重力設置為中心。 在模擬器中,提示和閃爍的 cursor 都顯示出來了。 在設備 (Xperia X10) 上進行測試時,提示文本和閃爍的 cursor 均未出現。 閃爍的 cursor 僅在我在編輯文本中輸入一些文本時顯示。

這是我的edittext,有沒有人可以看看有沒有遺漏?

<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 不顯示提示文本並且沒有閃爍的光標

我終於找到了讓它工作的解決方案。 這個 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>

希望還不算太晚。 我遇到了這個問題,我不知道每個設備是否都相同,但默認情況下EditText似乎有底部填充

盡管將重力設置為CENTER ,但我的 EditText 文本值似乎總是略高於中心,因此我另外設置了:

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

這為我修復了它,現在我的 EditText 完全居中:D

我認為,您應該將 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>

我嘗試了重力組合:

android:gravity="top|center_horizontal"

我之前的嘗試是將 EditText 嵌套在 RelativeLayout 中並將其設置為中心,但它看起來不太好,這種方式最適合我。

  • 在 XML 文件中添加重力 CENTER_HORIZONTAL 以將提示設置為 center.CURSORVISIBLE=false 所以 cursor 在第一次單擊時不可見
  • 在 java 中使用 addTextChangedListener,當用戶添加文本時,將重力向左改變並且也可見 cursor。

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);
                }
            }
        });

不要在樣式標簽中添加重力,而是在您的布局文件中添加它,這將起作用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM