Search code examples
androidandroid-layoutandroid-relativelayout

Android toLeftOf and toRightOf not working strange behavior


I want to place an EditText between 2 images...

Normally, it works perfect but I don't know why it is not working now...

I put first both images in the RelativeLayout and than add the EditText...

Screenhot:

Screenshot

Could you check my code ?

<RelativeLayout
    android:id="@+id/search_view"
    android:layout_width="match_parent"
    android:layout_height="?android:attr/actionBarSize"
    android:background="@color/white"
    android:elevation="3dp"
    android:visibility="invisible">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:layout_marginLeft="18dp"
        android:src="@drawable/ic_action_navigation_arrow_back"
        android:id="@+id/search_view_back"/>

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_marginRight="18dp"
        android:src="@drawable/ic_action_navigation_close"
        android:id="@+id/search_view_delete"/>

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="@color/font"
        android:textSize="18dp"
        android:hint="@string/contact_search_hint"
        android:textColorHint="#607a7a71"
        android:singleLine="true"
        android:layout_centerVertical="true"
        android:layout_toRightOf="@id/search_view_back"
        android:layout_toLeftOf="@id/search_view_delete"
        android:paddingLeft="8dp"
        android:paddingRight="8dp"
        android:background="@android:color/transparent"
        android:imeOptions="actionSearch"
        android:id="@+id/search_view_input"
        />

</RelativeLayout>

Solution

  • if i were you i would use LinearLayout instead of RelativeLayout in this cases. You can use the "layout_weight" property for this kind of situations.anyway i tried a little xml for your case.try it and let me know mate

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent"  tools:context=".MainActivity">
    
    
        <ImageView
            android:id="@+id/image1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:src="@mipmap/ic_launcher" />
    
        <EditText
            android:id="@+id/edittext1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_weight="1"
             />
    
        <ImageView
            android:id="@+id/image2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:src="@mipmap/ic_launcher" /></LinearLayout>