I am trying to build this custom row for my ListView. Through the magic of Photoshop here is what I am trying to accomplish:
But when I run my list view, it is coming out like this:
Can anyone help me figure out what I am doing wrong with the view?
Here is my row.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:padding="5dp">
<!-- ListRow Left sied Thumbnail image -->
<LinearLayout
android:id="@+id/thumbnail"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true">
<ImageView
android:id="@+id/list_image"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_alignParentRight="true"
android:background="@color/COLOR_GREY" />
</LinearLayout>
<!-- Item Name -->
<TextView
android:id="@+id/txtItemName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/thumbnail"
android:layout_toRightOf="@+id/thumbnail"
android:text="Item Name"
android:textColor="#040404"
android:textSize="15dip"
android:textStyle="bold"
android:typeface="sans" />
<!-- progress count -->
<TextView
android:id="@+id/txtProgress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/thumbnail"
android:layout_alignLeft="@+id/thumbnail"
android:text="Item Name"
android:textColor="#040404"
android:textSize="15dip"
android:textStyle="bold"
android:typeface="sans" />
<!-- Retry button -->
<Button
android:id="@+id/btnRetry"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@id/txtItemName"
android:layout_toRightOf="@id/txtItemName"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="5dp"
android:text="Retry" />
<!-- Delete button -->
<Button
android:id="@+id/btnDelete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@id/btnRetry"
android:layout_toRightOf="@id/btnRetry"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="5dp"
android:text="Delete" />
<!-- ProgressBar -->
<ProgressBar
style="?android:attr/progressBarStyleHorizontal"
android:layout_below="@id/txtItemName"
android:layout_alignLeft="@id/txtItemName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/progressBarItem" />
</RelativeLayout>
2
Answers
Why you using ImageView inside LinelarLayout?
Check this:
Also, don’t forget that textSize should be in sp
If you want to change button sizes – just replace:
and put your custom width and height in dp like:
This is the layout mostly done as on your picture, just need to change with the buttons in order to make them looks better.
In RelativeLayout you do not need to use orientation
and for text use sp instead of dip
You can find other tips how to work with layouts by doing small parts of the layout and searching them in the stackoverflow and then you can learn how to do bigger layouts. Because before you really needed to wrap some components into linear layouts, but now with Android Studio 2.2 you can use ConstraintLayout