将drawable添加到EditText的左上角

时间:2013-07-24 07:09:57

标签: android android-edittext drawable

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

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

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

2 个答案:

答案 0 :(得分:5)

似乎不可能仅使用EditText / TextView而没有其他效果和其他视图(我已经提供了最终的方式,但它需要更多的工作与图像,可能不是适用于每部手机,因为不同的编辑文本背景,取决于制造商)。已经多次询问过相同的问题:例如herehere

根据我的理解,最简单和最紧密的方式可能与上述问题(使用RelativeLayout)中的建议不同,但只是使用FrameLayout以下方式(您将有2个视图与3个使用RelativeLayout + ImageView查看: 制作你的图标9patch(使用9patch tool)。例如。您最初有以下图标:

original icon

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

enter image description here(你可以看到黑色像素,显示要用视图拉伸的区域和内容区域)

使用以下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>

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

result image

此外,甚至可以仅使用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>

给出以下结果(请注意,编辑的默认框架已消失): single view appearance

答案 1 :(得分: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>