我可以在android drawableRight
中轻松地添加一个EditText
,在drawableRight
的情况下,点击事件可以完美地工作。但我在drawableRight
中需要两个EditText
。
那么,如何在drawableRight
中添加两个EditText
?我还需要分别在drawableRight
上执行点击事件。
例如,我想在EditText
中添加黄色星形,如下图所示,并点击最右边的图像我想打开电话的联系簿,点击黄星,我想打电话给用户最喜欢的号码列表。
那我该怎么做?有什么想法吗?
答案 0 :(得分:2)
没有原生支持,所以你有两个选择:
简易解决方案:在右侧创建带有两个图像视图的线性布局,这些将是您的绘图。
困难的方法:扩展Drawable
类并实现您自己的onDraw
方法,您将绘制两个drawable。比在文本视图中使用那个。
答案 1 :(得分:0)
你不能。 TextView
只能在其两侧包含一个drawable。您拥有的唯一选择是:
View
。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);
}