我需要在Edittext
旁边加Search button
。 EditText
应该尽可能多地填充宽度,按钮应该在右边,并且足够大以容纳它的文本。
现在看起来像这样:
[EDIT TEXT][Search]
但应该是这样的:
[.......EDIT TEXT.......][Search]
以下是XML
:
<RelativeLayout android:id="@+id/RelativeLayout01" android:layout_width="fill_parent" android:layout_height="wrap_content">
<EditText android:id="@+id/search_box"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="type to filter"
android:inputType="text"
android:maxLines="1" />
<Button android:id="@+id/search_text"
android:layout_toRightOf="@id/search_box"
android:text="Search"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</RelativeLayout>
答案 0 :(得分:72)
是否必须是相对布局?
我建议如下:将EditText
layout_width
设置为fill_parent
,将layout_weight
设置为1,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content" android:orientation="horizontal"
android:layout_width="fill_parent">
<EditText android:text="@+id/EditText01"
android:id="@+id/EditText01"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_width="fill_parent">
</EditText>
<Button android:text="@+id/Button01"
android:id="@+id/Button01"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</Button>
</LinearLayout>
答案 1 :(得分:10)
在这种情况下,EditText
的宽度必须设置为fill_parent
(而不是wrap_content
):
<RelativeLayout android:id="@+id/RelativeLayout01" android:layout_width="fill_parent" android:layout_height="wrap_content">
<EditText android:id="@+id/search_box"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="type to filter"
android:inputType="text"
android:maxLines="1" />
<Button android:id="@+id/search_text"
android:layout_toRightOf="@id/search_box"
android:text="Search"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</RelativeLayout>
正如你所说,它隐藏了按钮。然后,只需颠倒顺序:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:id="@+id/RelativeLayout01" android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button android:id="@+id/search_text"
android:layout_alignParentRight="true"
android:text="Search"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<EditText android:id="@+id/search_box"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@id/search_text"
android:layout_centerVertical="true"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="type to filter"
android:inputType="text"
android:maxLines="1" />
</RelativeLayout>
答案 2 :(得分:3)
我认为Cristian的答案适用于SDK的更高版本,但对于以前的版本,您需要先做的是首先定义Button,然后将EditText放置到layout_toLeftOf =“@ id / search_box”,其中,两种方式都应该有不同的ID。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relative_layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button
android:id="@+id/search_button"
android:text="Search"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
/>
<EditText
android:id="@+id/search_text"
android:layout_toLeftOf="@+id/search_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="type to filter"
android:inputType="text"
android:maxLines="1"
/>
</RelativeLayout>
答案 3 :(得分:1)
试试这个我已经修好了一点。它显示编辑文本的右侧按钮,也可以编辑允许增加的文本宽度。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="10dip">
<TextView
android:id="@+id/label"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="instructions"/>
<EditText
android:id="@+id/entry"
android:layout_width="250dip"
android:layout_height="wrap_content"
android:background="@android:drawable/editbox_background"
android:layout_below="@id/label"/>
<Button
android:id="@+id/ok"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@id/entry"
android:layout_alignParentRight="true"
android:layout_marginLeft="1dip"
android:text="ok" />
</RelativeLayout>
答案 4 :(得分:0)
对于那些想要为相对布局解决方案的人,请尝试一下。我的目标是保持按钮大小不变,但是在将手机旋转到横向模式或在不同的手机屏幕尺寸时调整EditText字段。
因此,诀窍是结合使用边距和将父级与起始对齐。这是您可以尝试的方法,我直接从我的应用程序中删除了它。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/mainBackground"
android:orientation="vertical"
android:paddingLeft="3dp"
android:paddingRight="1dp"
tools:context=".MainActivity">
<EditText
android:id="@+id/itemEntry"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
android:layout_marginStart="14dp"
android:layout_marginEnd="100dp"
android:layout_marginBottom="17dp"
android:imeOptions="actionDone"
android:inputType="text"
android:textColor="@color/textColor" />
<Button
android:id="@+id/button_insert"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@id/itemEntry"
android:layout_marginStart="9dp"
android:layout_marginTop="-4dp"
android:layout_marginEnd="9dp"
android:layout_alignParentEnd="true"
android:background="@drawable/round_button"
android:text="+"
android:textColor="#ffffff"
android:textSize="20dp"
android:layout_alignParentRight="true"/>
</RelativeLayout>
您将获得的是EditText的大小将根据屏幕宽度而变化,而按钮的结尾将保持固定。由于android:layout_alignParentEnd="true"
,该按钮一直停留在末尾。为了阻止EditText越过Button,使用了android:layout_marginEnd="100dp"
。希望这会有所帮助!
答案 5 :(得分:0)
现在更好的答案是将EditText的layout_width设置为0dp
<LinearLayout
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_width="fill_parent">
<EditText
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_width="0dp"/>
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>