我需要EditText
在 Android 中将提示文本居中。我该怎么做呢?
16 回答
为了使提示文本居中与 EditText 一起使用,您必须确保定义了 android:ellipsize="start"。我不知道为什么这使它起作用,但确实如此。
从个人代码中提取的示例:
<EditText
android:id="@+id/player2Name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:ellipsize="start"
android:gravity="center_horizontal"
android:hint="@string/player2_name"
android:inputType="textCapWords|textPersonName"
android:singleLine="true" />
实际上,android:gravity="center_horizontal"
创建您正在寻找的居中效果。同样,您可以使用android:gravity="start"
在 EditText 视图的开头放置提示文本,等等。
使用这个 xml 属性:
机器人:重力=“中心”
使用属性
android:gravity="center"
我在每种情况下都使用了这段代码,它可以完美地工作,而无需使用android:ellipsize="start"在中心进行提示。
<EditText
android:id="@+id/player2Name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:hint="robi"
android:inputType="text" />
我认为答案应该是:
android:textAlignment="center"
textAlignment 为我工作。
textAlignment="center"
不幸的是,这两个答案都没有帮助我对齐提示,用 LTR 语言编写,而布局方向是 RTL。我需要在一种翻译应用程序中进行这样的布局,以使覆盖图标不会干扰 RTL 文本。但是这个技巧不适用于提示,因为还没有任何文本(图标出现在提示上方),我来到了以下布局问题的 java 解决方案:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
. . .
if (isRightToLeft()){
EditText guess = (EditText) rootView.findViewById(android.R.id.text1);
CharSequence hint = "\u200F" + guess.getHint();
guess.setHint(hint);
}
. . .
}
诀窍是在从右到左的标记中添加从左到右的字符串。它似乎有效,但有人知道更优雅的解决方案吗?
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp">
<android.support.design.widget.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:hint="ENTER PIN"
android:inputType="numberPassword" />
</android.support.design.widget.TextInputLayout>
注意:在标签 TextInputEditText 中,属性
机器人:重力=“中心”
是什么使得在中心对齐文本(包括提示文本)的处理
使用这个:android:gravity="center"
我使用它并为我工作
android:gravity="Left|center_vertical"
在 EditText 中使用 android:textAlignment="center"
,它对我有用
这对我有用:
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/nombreslayoutinput">
<EditText
android:id="@+id/nombreslayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/nombres"
android:layout_centerInParent="true"
android:gravity="center|center_vertical"
android:ellipsize="start"
android:inputType="textCapWords|textPersonName"
/>
</android.support.design.widget.TextInputLayout>
正确答案是
android:gravity="center_horizontal
暗示重力
android:textAlignment="center"
文字重力
android:gravity="left"
我的问题是EditText
不够大,无法完全适合其父级(FrameLayout
在我的情况下),因此仅使用android:gravity="center"
(center_vertical、horizontal、start 或其他) 只会适合它在 中EditText
,而不是在其父级中,所以我必须EditText
使用以下方法将其父级居中:
android:layout_gravity="center"
pd:我曾经 android:background="@android:color/transparent"
在EditText
提示中隐藏丑陋的下划线