如何在EditText中添加两个drawableRight?

问题描述 投票:0回答:4

我可以轻松地在 Android 中的

drawableRight
中添加一个
EditText
,并且在单击事件时可以完美地处理一个
drawableRight
。但我需要
drawableRight
中的两个
EditText

那么,如何在

drawableRight
中添加两个
EditText
呢?我还需要分别在
drawableRight
上执行单击事件。

例如,我想在
EditText
中添加黄色星星,如下图所示,然后单击最右边的图像,我想打开电话的通讯录并在单击黄色星星 我要呼叫用户最喜欢的号码列表。

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

multiple drawable

android android-edittext android-drawable
4个回答
1
投票

对此没有本机支持,因此您在这里有两个选择:

简单的解决方案: 创建一个线性布局,右侧有两个图像视图,这些将是您的可绘制对象。

困难的方法:扩展一个

Drawable
类并实现您自己的
onDraw
方法,您将在其中绘制两个可绘制对象。而不是将其用于您的文本视图。


0
投票

你不能。

TextView
的两侧只能包含一个可绘制对象。您唯一的选择是:

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

0
投票

如果图标是静态的并且以相同的顺序使用,那么我们可以像下面这样做

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/icon1" android:right="20dp"/>
<item android:drawable="@drawable/icon2" android:left="20dp"/>
</layer-list>

-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);

 }
© www.soinside.com 2019 - 2024. All rights reserved.