Search code examples
androidandroid-layoutandroid-relativelayout

Relative Layout Above Positioning Not Working


I have problem with a simple relative layout. The green TextView (id=subtitle) disappears at runtime. Why?

Edit: The problem only exists when i use this layout in a ListView!!!

aaa.xml:

    <ImageView
        android:id="@+id/image"
        android:layout_width="120dp"
        android:layout_height="120dp"
        android:layout_alignParentLeft="true"
        android:src="@drawable/ic_launcher"
        />

    <TextView
        android:id="@+id/title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/image"
        android:maxLines="2"
        android:minLines="1"
        android:ellipsize="end"
        android:gravity="center_vertical|right"
        android:text="Title"
        android:background="#ff0000"
        />

    <TextView
        android:id="@+id/subtitle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/image"
        android:layout_above="@+id/subsubtitle"
        android:lines="1"
        android:ellipsize="end"
        android:gravity="center_vertical|right"
        android:text="Subtitle"
        android:background="#00ff00"
        />

    <TextView
        android:id="@+id/subsubtitle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_toRightOf="@+id/image"
        android:lines="1"
        android:ellipsize="end"
        android:gravity="center_vertical|right"
        android:text="SubSubtitle"
        android:background="#0000ff"
        />

</RelativeLayout>

ListView Adapter:

public class AdsAdapter extends BaseAdapter {

    Context mContext;

    List<...> mArray;

    public AdsAdapter(Context context) {
        mContext= context;
        mArray= new ArrayList<>();
    }

    public void setData(List<...> data) {
        this.mArray = data;
    }

    @Override
    public int getCount() {
        return mArray.size();
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        return getViewGroup(convertView);
    }

    public ViewGroup getViewGroup(View reuse)
    {
        if(reuse instanceof ViewGroup)
            return (ViewGroup)reuse;

        LayoutInflater inflater = LayoutInflater.from(mContext);
        ViewGroup item = (ViewGroup)inflater.inflate(R.layout.aaa, null);

        return item;
    }
}

enter image description here


Solution

  • Just Replace your susubTitle TextView with below TextView

    <TextView
        android:id="@+id/subsubtitle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@id/image"
        android:layout_toRightOf="@+id/image"
        android:background="#0000ff"
        android:ellipsize="end"
        android:gravity="center_vertical|right"
        android:lines="1"
        android:text="SubSubtitle" />
    

    enter image description here