- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有我的 xml 布局:
<EditText
android:id="@+id/passwordEditText"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_marginBottom="20dp"
android:drawableStart="@drawable/ic_sign_in_password"
android:drawablePadding="15dp"
android:hint="@string/password"
android:textSize="15sp"/>
我想写 Espresso 测试检查 EditText 有android:drawableStart="@drawable/ic_sign_in_password".
我该怎么做?
最佳答案
创建一个辅助方法 sameBitmap
比较 2 个可绘制对象。
private static boolean sameBitmap(Drawable actualDrawable, Drawable expectedDrawable) {
if (actualDrawable == null || expectedDrawable == null) {
return false;
}
if (actualDrawable instanceof StateListDrawable && expectedDrawable instanceof StateListDrawable) {
actualDrawable = actualDrawable.getCurrent();
expectedDrawable = expectedDrawable.getCurrent();
}
if (actualDrawable instanceof BitmapDrawable) {
Bitmap bitmap = ((BitmapDrawable) actualDrawable).getBitmap();
Bitmap otherBitmap = ((BitmapDrawable) expectedDrawable).getBitmap();
return bitmap.sameAs(otherBitmap);
}
if (actualDrawable instanceof VectorDrawable ||
actualDrawable instanceof VectorDrawableCompat ||
actualDrawable instanceof GradientDrawable) {
Rect drawableRect = actualDrawable.getBounds();
Bitmap bitmap = Bitmap.createBitmap(drawableRect.width(), drawableRect.height(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
actualDrawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
actualDrawable.draw(canvas);
Bitmap otherBitmap = Bitmap.createBitmap(drawableRect.width(), drawableRect.height(), Bitmap.Config.ARGB_8888);
Canvas otherCanvas = new Canvas(otherBitmap);
expectedDrawable.setBounds(0, 0, otherCanvas.getWidth(), otherCanvas.getHeight());
expectedDrawable.draw(otherCanvas);
return bitmap.sameAs(otherBitmap);
}
return false;
}
然后,创建一个匹配器来检查相关的可绘制对象。在这里,它只验证可绘制的开始,但如果您想验证可绘制的结束或顶部或底部,您可以自己扩展它:
private static Matcher<View> withRelativeDrawables(int expectedDrawableStart) {
return new TypeSafeMatcher<View>() {
@Override
protected boolean matchesSafely(View item) {
if (item instanceof TextView) {
TextView textView = (TextView) item;
//get an array of 4 relative drawables. The first one is drawable start
Drawable[] relativeDrawables = textView.getCompoundDrawablesRelative();
Drawable expectedDrawableStart = ContextCompat.getDrawable(context, expectedDrawableStart);
return sameBitmap(relativeDrawables[0], expectedDrawableStart);
}
return false;
}
@Override
public void describeTo(Description description) {
}
};
}
然后按如下方式使用它:
onView(withId(R.id.passwordEditText)).check(matches(withRelativeDrawables(R.drawable.ic_sign_in_password)));
关于android-espresso - 安卓 Espresso : How check "drawableStart" of EditText?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50817066/
我在下面的 Button 中有一个可绘制的 drawableStart 图标,但它无法正确缩放。我该怎么做才能纠正这个问题? P.S:我看到一些关于这个问题的帖子试图使用 ScaleDrawable
这是我的按钮: 这是ic_envelope: 最后是错误: Binary XML file line #1: invalid drawable tag vector 设置布局时发生我该如何
我创建了一个非常基本的布局: 根据 the documentation for drawableStart , "The drawable to be dra
我有我的 xml 布局: 我想写 Espresso 测试检查 EditText 有android:drawableStart="@drawable/ic_sign_in_password". 我该怎
Lars Vogel 的 SQLite 教程,自己的 ContentProvider 和 Loader 使用以下 ToDo 项目列表布局(检查 http://www.vogella.com/artic
起初我以为当我将系统语言更改为阿拉伯语时,drawableStart 会自动更改图标的位置,这是一种从右到左书写的语言。但是当我这样做时,什么也没有发生。所以我猜它们是一样的? 最佳答案 我不确定上面
所以我在这里查看了这份文件 https://developer.android.com/jetpack/compose/text#enter-modify-text 我设法使用以下方法创建了一个文本字
我是一名优秀的程序员,十分优秀!