如何在EditText中添加两个drawableRight?

时间:2015-12-14 08:01:54

标签: android android-edittext android-drawable

我可以在android drawableRight中轻松地添加一个EditText,在drawableRight的情况下,点击事件可以完美地工作。但我在drawableRight中需要两个EditText

那么,如何在drawableRight中添加两个EditText?我还需要分别在drawableRight上执行点击事件。

例如,我想在EditText中添加黄色星形,如下图所示,并点击最右边的图像我想打开电话的联系簿,点击黄星,我想打电话给用户最喜欢的号码列表。

那我该怎么做?有什么想法吗?

multiple drawable

3 个答案:

答案 0 :(得分:2)

没有原生支持,所以你有两个选择:

简易解决方案:在右侧创建带有两个图像视图的线性布局,这些将是您的绘图。

困难的方法:扩展Drawable类并实现您自己的onDraw方法,您将绘制两个drawable。比在文本视图中使用那个。

答案 1 :(得分:0)

你不能。 TextView只能在其两侧包含一个drawable。您拥有的唯一选择是:

  1. 创建自定义View
  2. 选择一些ViewGroup个后代(RelativeLayout / FrameLayout / etc)并将TextView与两个ImageView一起放入其中。

答案 2 :(得分:-1)

使用RelativeLayout将两个Drawable放入EditText。 要设置内部填充,请将不可见的drawableRight放入EditText:

<强> /res/values/dimens.xml

<resources>
    <dimen name="iconSize">32dp</dimen>
</resources>

<强> /res/layout/my_layout.xml

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <EditText
        android:id="@+id/editText"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:inputType="textAutoComplete"/>

    <ImageButton
        android:id="@+id/imageButton1"
        android:layout_width="@dimen/iconSize"
        android:layout_height="@dimen/iconSize"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:src="@drawable/ic_action_1"/>

    <ImageButton
        android:id="@+id/imageButton2"
        android:layout_width="@dimen/iconSize"
        android:layout_height="@dimen/iconSize"
        android:layout_toLeftOf="@+id/imageButton1"
        android:layout_centerVertical="true"
        android:src="@drawable/ic_action_2"/>

</RelativeLayout>

在您的活动中:

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.my_layout);

    EditText editText = (EditText) findViewById(R.id.editText);

    int iconSize = (int) getResources().getDimension(R.dimen.iconSize)

    Drawable drawable = ContextCompat.getDrawable(context, R.drawable.ic_action_1);
    drawable.setBounds(0, 0, iconSize * 2, 0); // that is the trick!

    editText.setCompoundDrawables(null, null, drawable, null);

 }