15

下面是一个 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"
        />
4

7 回答 7

18

从 API11 开始,您可以简单地使用 android:baselineAlignBottom="true"

在 API11 之前,您可以覆盖getBaseLine()并返回图像高度。

于 2012-08-04T22:15:59.527 回答
7

您应该在 ImageView 中使用以下两行将 Image 视图的底部与附近 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>
于 2016-01-24T12:56:36.053 回答
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>

结果是这样的:
日历/计划器的标题

于 2011-02-24T10:01:45.510 回答
0

我使用了文本视图而不是图像视图,并使用了新文本视图的可绘制对象来设置图像并且它起作用了:

<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"
        />
于 2014-07-24T15:32:03.480 回答
0

我偶然发现了一个类似的问题,并通过layout_alignBaseline完全避免解决它,而不是依赖layout_alignBottom,它是自 API 1 以来可用的。

于 2012-08-22T13:10:28.333 回答
-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();
    }
}
于 2015-04-27T03:21:26.757 回答
-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>
于 2016-07-20T19:26:02.110 回答