7

我知道在 Android 中我们可以使用函数 setCompoundDrawables(..) 来添加可绘制对象。

我的问题是我的 EditText 是多行的,我想把 drawable 放在 EditText 的左上角。但是使用 setCompoundDrawables() 函数,只能选择将可绘制对象放在特定的一侧。

Android API 是否有可能做到这一点?

4

2 回答 2

5

似乎只有EditText/TextView没有任何副作用和额外的视图是不可能的(我在最后提供了方法,但它需要更多的图像处理,并且可能不适用于每部手机,因为不同的编辑文本背景取决于制造)。同样的问题已经被问过很多次了:例如这里这里

根据我的理解,最简单和最快的方法可能不是上述问题中建议的(通过使用RelativeLayout),而是使用以下方式(使用+FrameLayout时您将有 2 个视图与 3 个视图):使您的图标 9patch(使用9patch 工具)。例如,您最初有以下图标:RelativeLayoutImageView

原始图标

然后您可以将其转换为以下内容:

在此处输入图像描述(您可以看到黑色像素,它显示要使用视图拉伸的区域和内容区域)

使用以下 xml:

    <!-- Main activity layout -->
    <RelativeLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

        <!-- Edit text with drawable at top left -->
        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:background="@drawable/icon_9patch">
            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/edit"
                android:hint="Enter text"
                android:maxLines="10"
                android:inputType="textMultiLine" />
        </FrameLayout>
    </RelativeLayout>

给出以下结果(我添加了多行文本):

结果图像

此外,甚至可以仅执行任务EditText(但您可能会丢失默认的 EditText 背景,这可能不好,但是您可以将其包含到您的 ning-patch 图像中;但它在所有手机上仍然是相同的,而不是本机一)。

以下 xml 也可以正常工作:

<!-- Main activity layout -->
<RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <!-- Edit text with drawable at top left -->
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/edit"
            android:hint="Enter text"
            android:maxLines="10"
            android:inputType="textMultiLine"
            android:layout_alignParentBottom="true"
            android:background="@drawable/icon_9patch" />
</RelativeLayout>

给出以下结果(注意编辑的默认框架已经消失): 单视图外观

于 2013-07-26T11:24:04.220 回答
0

试试这个:

           <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/scale_10"
                android:orientation="horizontal">

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/map_mark"/>

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="@dimen/scale_10"
                    android:gravity="top"
                    android:text="TEXT HERE"/>
            </LinearLayout>
于 2015-07-16T06:04:46.357 回答