Android - 如何对齐TextView文本

时间:2014-07-03 02:39:45

标签: android android-layout

我为layout项目提供了以下ListView

<?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:padding="5dp">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/item_icon_image"
        android:layout_centerVertical="true"
        android:layout_alignParentLeft="true"
        android:src="@drawable/m" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Business Name"
        android:id="@+id/item_title_text"
        android:layout_toRightOf="@+id/item_icon_image"
        android:layout_marginLeft="3dp"
        android:textStyle="bold"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:layout_alignTop="@+id/item_icon_image" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:text="Distance"
        android:id="@+id/item_distance_text"
        android:layout_alignLeft="@+id/item_title_text"
        android:layout_alignBottom="@+id/item_icon_image" />
</RelativeLayout>

这是渲染的结果:

item layout

正如您所看到的,真实文本和图像底部之间存在差距...我希望文本的底部与图像的底部完全匹配...所以问题是:如何我可以将文字对齐到图像的底部吗?

(这也适用于顶部文字,但最重要的是在顶部)


编辑:

目前我正在使用:

android:layout_marginBottom="-10dp"

但是我想要一些更自动的东西,一些不依赖于dp或屏幕的解决方案....但是作为评论,这可能是不可能的,因为View需要为这样的字母留出空间作为&#39; y&#39;,&#39; g&#39;并且&#39; ....但我希望有可能根据它的内容对齐它,所以如果没有&#39; g&#39;它不会挽救这个空间。

3 个答案:

答案 0 :(得分:1)

您应该在顶部文字视图中添加android:gravity="top",在底部文字视图中添加android:gravity="bottom"以获得所需的结果。

答案 1 :(得分:0)

请尝试这种方式,希望这有助于您解决问题。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="5dp">

    <ImageView
        android:id="@+id/item_icon_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher" />

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_marginLeft="5dp"
        android:layout_weight="1"
        android:orientation="vertical">

        <TextView
            android:id="@+id/item_title_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Business Name"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:textStyle="bold" />
        <View
            android:layout_width="1dp"
            android:layout_height="odp"
            android:layout_weight="1"/>

        <TextView
            android:id="@+id/item_distance_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Distance"
            android:textAppearance="?android:attr/textAppearanceSmall" />
    </LinearLayout>
</LinearLayout>

答案 2 :(得分:0)

这样做可以达到预期的效果: