【问题标题】:Layout Text with Drawable excat and performant具有可绘制 excat 和高性能的布局文本
【发布时间】:2014-01-30 07:48:20
【问题描述】:

我怎样才能用完全像这样的图标来布局文本:

我用这个布局做到了:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="64dp"
    android:layout_height="64dp">
    <ImageView
        android:id="@+id/imgIcon"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="8dp"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="16dp"
        android:layout_marginBottom="24dp"
        android:duplicateParentState="true"
        android:src="@drawable/delete_icon" />
    <TextView
        android:id="@+id/txtLabel"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:gravity="center_horizontal"
        android:duplicateParentState="true"
        android:text="xxx" />
</RelativeLayout>

Android guide 说:使用复合可绘制对象 - 包含 ImageView 和 TextView 的 LinearLayout 可以更有效地作为复合可绘制对象处理。 我试过了,但我找不到我需要的布局参数(图像的大小、图像和文本的不同填充)。

<TextView
    android:id="@+id/txtLabel"
    android:layout_width="64dp"
    android:layout_height="64dp"
    android:layout_alignParentBottom="true"
    android:gravity="center_horizontal|bottom"
    android:duplicateParentState="true"
    android:drawableTop="@drawable/delete_icon"
    android:paddingTop="8dp"
    android:drawablePadding="8dp"
    android:text="xxx" />

这是结果(左边是RelativeLayout,右边是复合drawable):

如果有更好的标准组件提供必要的参数,也是可以接受的。

【问题讨论】:

    标签: android layout textview drawable


    【解决方案1】:

    我也尝试过这样做。
    我得到了这个结果(请注意,图像有一个“光学正方形”,小于物理图像尺寸):

    我正在使用我最喜欢的方法:复合可绘制对象。

    但是:

    1 - 我准备了一些不同分辨率的图像,因此 32*32 被称为标准 mdpi (160dpi) 分辨率,并以不同的分辨率缩放(xxhdpi 为 96*96 px 宽和高)- 2 - 我将这些图像放在相应的可绘制文件夹中(drawable-ldpi 到 drawable-xxhdpi)。 3 - 我稍微修正了布局,以匹配。

    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#fff"
        android:layout_margin="0dp"
        android:padding="0dp"
        >
        <TextView
            android:id="@+id/txtLabel"
            android:layout_width="64dp"
            android:layout_height="64dp"
            android:layout_alignParentBottom="true"
            android:gravity="center_horizontal|bottom"
            android:padding="8dp"
            android:drawableTop="@drawable/delete_icon"
            android:drawablePadding="4dp"
            android:text="XXX"
            android:textSize="12sp"
        />
    </RelativeLayout>
    

    我使用全部大写字母来更好地查看文本和可绘制对象之间的间距。
    它符合您的需求吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-01
      • 2020-09-10
      • 2012-11-30
      • 2018-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多