下面是一个TextView,后跟RelativeLayout中包含的ImageView。我试图让图像的底部与文本的基线对齐。当我使用alignBaseline作为图像时,引用TextView,它是图像的顶部,与文本的基线而不是底部对齐。我该如何解决这个问题?
<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"
/>
<ImageView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:paddingLeft="15px"
android:layout_toRightOf="@id/month"
android:layout_alignBaseline="@id/month"
android:src="@drawable/minicalimage"
android:id="@+id/calimage"
/>
答案 0 :(得分:16)
从API11开始,您可以简单地使用
android:baselineAlignBottom="true"
在API11之前,您可以覆盖getBaseLine()
并返回图像高度。
答案 1 :(得分:6)
您应该在ImageView中使用以下两行将图像视图的底部对齐到附近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>
答案 2 :(得分:3)
我能够完成我想做的事情。我没有使用alignBaseline,只是修复了填充和调整图像大小的问题。我所遇到的一些问题是由于图像太大而且不希望地填满了空间。我用来实现我想要的代码如下:
<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>
这是结果:
答案 3 :(得分:0)
我偶然发现了一个类似的问题,只是完全避免使用layout_alignBaseline
解决了这个问题,而是依赖layout_alignBottom
代替,这是自API 1以来可用的。
答案 4 :(得分:0)
我使用文本视图而不是图像视图,并使用新文本视图的drawable来设置图像并且它有效:
<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"
/>
答案 5 :(得分:-1)
/**
* Set whether to set the baseline of this view to the bottom of the view.
* Setting this value overrides any calls to setBaseline.
*
* @param aligned If true, the image view will be baseline aligned with
* based on its bottom edge.
*
* @attr ref android.R.styleable#ImageView_baselineAlignBottom
*/
public void setBaselineAlignBottom(boolean aligned) {
if (mBaselineAlignBottom != aligned) {
mBaselineAlignBottom = aligned;
requestLayout();
}
}
答案 6 :(得分:-1)
您想使用 android:layout_alignBottom 属性将ImageView与另一个View的基线对齐。
在下面的示例中,我将ImageView与另一个TextView对齐。我包含了ImageView的代码,而不是TextView。为了与TextView对齐,您只需要包含TextView的ID。
如果用户更改了设备上的文字大小,调整边距或填充将导致视图未对齐。
<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>