Below is a TextView followed by an ImageView contained in RelativeLayout. I\'m trying to get the bottom of the image to align with the baseline of the text. When I use alignBa
I was able to accomplish what I wanted to do. I did not utilize alignBaseline, just fixed the problem with padding and resizing the image. Some of the issues I was having arose from having an image too big and it filling up the space undesirably. The code I used to achieve what I wanted is below:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="25px"
android:paddingTop="30px"
android:id="@+id/LinearLayout1">
<TextView
android:id="@+id/month"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="feb"
android:textSize="60px"
android:typeface="serif"
/>
<ImageView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_toRightOf="@id/month"
android:layout_alignBottom="@id/month"
android:paddingBottom="12px"
android:src="@drawable/minicalimage"
android:id="@+id/calimage"
/>
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="2011"
android:id="@+id/year"
android:layout_toRightOf="@id/calimage"
android:layout_alignBaseline="@id/month"
android:typeface="serif"
android:textSize="40px"
/>
</RelativeLayout>
This was the result:
i used a text view instead of an image view and used the new text view's drawable to set the image and it worked:
<TextView
android:id="@+id/month"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:text="feb"
android:textSize="60px"
android:typeface="serif"
/>
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:paddingLeft="15px"
android:layout_toRightOf="@id/month"
android:layout_alignBaseline="@id/month"
android:drawableRight="@drawable/minicalimage"
android:id="@+id/calimage"
/>
I stumbled upon a similar issue, and solved it just by avoiding layout_alignBaseline
altogether, relying on layout_alignBottom
instead, which is available since API 1.
Since API11 you can simply use
android:baselineAlignBottom="true"
Prior to API11 you can overwrite getBaseLine()
and return image height.
You should use both following lines in your ImageView to align bottom of Image view to bottom of nearby TextView:
android:layout_alignBaseline="@+id/txtview"
android:baselineAlignBottom="true"
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/txtview"
... />
<ImageView
...
android:layout_toRightOf="@+id/txtview"
android:layout_alignBaseline="@+id/txtview"
android:baselineAlignBottom="true"
...
/>
</RelativeLayout>
You want to use the android:layout_alignBottom attribute to align the ImageView with the baseline of another View.
In the sample below I aligned the ImageView to another TextView. I included the code for the ImageView, and not the TextView. In order to align to the TextView you'll just need to include the id of the TextView.
Adjusting the margin or padding will result in the Views being misaligned if the user changes the text size on their device.
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/selectableItemBackground">
<!-- additional code here -->
<ImageView
android:id="@+id/message_time_chevron_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/replies_username_id"
android:layout_alignParentRight="true"
android:clickable="true"
android:src="@drawable/ic_chevron_right"/>
<!-- additional code here -->
</RelativeLayout>