在下面的xml文件中。我正在尝试对齐contents.i.e,第一个textview后面跟着edittext,然后在下一行中继续。但现在紧接着,文本会相互强加,如何解决这个问题。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.70" >
<TextView
android:id="@+id/hostname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/ip"
android:layout_alignParentLeft="true"
android:text="hostname" />
<EditText
android:id="@+id/ip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="39dp"
android:ems="10"
android:inputType="textEmailAddress" >
</EditText>
<TextView
android:id="@+id/username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/ip"
android:layout_alignBottom="@+id/ip"
android:layout_alignParentLeft="true"
android:text="Hostname" />
<EditText
android:id="@+id/username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/editText1"
android:layout_below="@+id/ip"
android:layout_marginLeft="45dp"
android:layout_marginTop="42dp"
android:ems="10" />
<TextView
android:id="@+id/password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/hostname"
android:layout_alignBottom="@+id/username"
android:layout_alignParentLeft="true"
android:text="Password" />
<EditText
android:id="@+id/password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/password"
android:layout_centerHorizontal="true"
android:layout_marginTop="47dp"
android:ems="10"
android:inputType="textPassword" />
</RelativeLayout>
</LinearLayout>
答案 0 :(得分:9)
另一种方法,对我来说效果很好,在您的xml文件中,添加指定<LinearLayout>
的父android:orientation="horizontal"
以包含您的TextView
和{{1} }}
此父级EditText
必须 您的第一个LinearLayout
必须指定LinearLayout
:
android:orientation="vertical"
这是结果(警告标志是因为提示和文本的硬编码字符串......):
答案 1 :(得分:2)
我在尝试定位android 4.X时遇到了同样的问题。我使用android:gravity="center_vertical"
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:ems="10"
android:id="@+id/itemNameLabel"
android:text="@string/entry_item_label"
android:textSize="@dimen/baseTextSize"
android:layout_weight=".15"
android:gravity="center_vertical" />
<EditText
android:layout_width="0dp"
android:layout_weight=".85"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:ems="10"
android:id="@+id/itemName"
android:textSize="@dimen/baseTextSize"
android:hint="Food, Video Game, etc..." />
</LinearLayout>
答案 2 :(得分:1)
您为多个视图使用相同的ID,然后多个视图使用layout_below
使用相同的ID,这就是为什么有一些在彼此之上。让他们成为独特的ids。此外,您在某些align_left
中使用的ID也是如此,例如editText1
。
简短回答:为每个视图使用唯一ID,并检查您对齐和定位的引用等。
你的下一个问题是你不应该尝试像这样分层你的观点,有一种叫做android:hint="hint text"
这就是我认为你想要的东西。一旦用户开始输入文本,该文本将隐藏,但除此之外,它就像在其上面有文本视图...
答案 3 :(得分:0)
这些都没有解决我的问题。我做的是我添加
android:textAlignment="center"
到XML中的textView。编辑文本默认居中。
TextView
和EditText
都是水平LinearLayout
。
答案 4 :(得分:0)
将此属性添加到EditText:
android:layout_below="@+id/hostname"
答案 5 :(得分:-7)
最佳方法是删除所有textview并设置andoid:hint
以编辑文字。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/ip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:ems="10"
android:hint="HostName"
android:inputType="textEmailAddress" >
</EditText>
<EditText
android:id="@+id/username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="HostName" />
<EditText
android:id="@+id/password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="Password"
android:inputType="textPassword" />
</LinearLayout>