[英]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 對我有用:(在索尼愛立信 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:
<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.