我可以轻松地在 Android 中的
drawableRight
中添加一个 EditText
,并且在单击事件时可以完美地处理一个 drawableRight
。但我需要 drawableRight
中的两个 EditText
。
那么,如何在
drawableRight
中添加两个EditText
呢?我还需要分别在 drawableRight
上执行单击事件。EditText
中添加黄色星星,如下图所示,然后单击最右边的图像,我想打开电话的通讯录并在单击黄色星星 我要呼叫用户最喜欢的号码列表。
对此没有本机支持,因此您在这里有两个选择:
简单的解决方案: 创建一个线性布局,右侧有两个图像视图,这些将是您的可绘制对象。
困难的方法:扩展一个
Drawable
类并实现您自己的onDraw
方法,您将在其中绘制两个可绘制对象。而不是将其用于您的文本视图。
你不能。
TextView
的两侧只能包含一个可绘制对象。您唯一的选择是:
View
。ViewGroup
后代(RelativeLayout
/FrameLayout
/等)并将 TextView 与两个 ImageView
一起放入其中。如果图标是静态的并且以相同的顺序使用,那么我们可以像下面这样做
<?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>
只需使用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);
}