15

以下は、RelativeLayoutに含まれるTextViewとそれに続く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で次の両方の行を使用して、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>
于 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

私は同様の問題に遭遇し、API 1以降で利用可能な、代わりにlayout_alignBaseline依存することを完全に回避することで問題を解決しました。layout_alignBottom

于 2012-08-22T13:10:28.333 に答える
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 に答える
-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を別のビューのベースラインに揃えます。

以下のサンプルでは、​​ImageViewを別のTextViewに揃えました。TextViewではなく、ImageViewのコードを含めました。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 に答える