web-dev-qa-db-fra.com

Android EditText et Button sur la même ligne

J'ai besoin d'avoir un Edittext à côté d'un Search button. Le EditText doit remplir autant de largeur que possible, le bouton doit être à droite et juste assez grand pour avoir son texte.

Il ressemble à ceci maintenant:

[EDIT TEXT][Search]

mais devrait ressembler à ceci:

[.......EDIT TEXT.......][Search]

Voici le 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>
35
BahaiResearch.com

Doit-il s'agir d'une mise en page relative?
Je suggère ce qui suit: set EditTextlayout_width à fill_parent et son layout_weight à 1, quelque chose comme ceci:

<?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>
73
Asahi

Dans ce cas, la largeur de EditText doit être définie sur fill_parent (au lieu de 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>

Éditer

Comme vous l'avez dit, cela masque le bouton. Ensuite, inversez simplement la commande:

<?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>
10
Cristian

Je crois que la réponse de Cristian fonctionne sur les versions ultérieures du SDK, mais pour les versions antérieures, vous devrez d'abord définir le bouton et placer le EditText sur layout_toLeftOf = "@ id/search_box", qui, soit dit en passant, les deux les objets doivent avoir des ID différents.

<?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
kcoppock

essayez cela, j'ai peu réparé. il montre le bouton droit de modifier le texte et également modifier la largeur du texte autorisé à augmenter.

<?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>
1
ud_an