java - 在 AndroidTestCase 中设置 View 的宽度和高度

标签 java android android-testing

在为 Android 库项目编写测试用例时,我遇到了一些 View 尺寸问题。具体来说,我正在使用 AndroidTestCase 来测试自定义 View 类,该类(除其他外)可以生成其内容的位图。创建位图时,该类根据自己的宽度和高度设置位图的宽度和高度:

public Bitmap getBitmap(){
  Bitmap output = Bitmap.createBitmap(this.getWidth(), this.getHeight(), Bitmap.Config.ARGB_8888);
  //Fill in the Bitmap
  return output;
}

我想要做的一些示例代码:

public void testBitmap(){
  LinearLayout l = new LinearLayout(getContext());
  MyCustomView myView = new MyCustomView(getContext());
  l.addView(myView);
  //draw things in myView
  Bitmap b = myView.getBitmap();
}

如果我从 xml 布局中扩充父级 l,则这在应用程序中有效,但是当我在单元测试中以编程方式创建所有 View 时,myView.getWidth() 和 myView.getHeight() 都返回 0。结果出现错误:

java.lang.IllegalArgumentException: width and height must be > 0
at android.graphics.Bitmap.createBitmap(Bitmap.java:687)

根据其他一些帖子,我尝试使用 LayoutParams 调整 myView 的宽度和高度:

myView.setLayoutParams(new LinearLayout.LayoutParams(100, 100));

我还尝试以类似的方式设置父布局 l 的 LayoutParams。然而,这些都没有成功改变myView的宽度和高度; getWidth() 和 getHeight() 仍然返回 0。有什么方法可以确保 myView 的宽度和高度不为零?

非常感谢任何帮助。

最佳答案

找到了我自己的答案。

尝试了一些事情后,我发现:

myView.setLayoutParams(new LinearLayout.LayoutParams(100, 100));

我可以使用:

myView.layout(0, 0, 100, 100);

所以整个示例代码如下所示:

public void testBitmap(){
  LinearLayout l = new LinearLayout(getContext());
  l.layout(0, 0, 100, 100);
  MyCustomView myView = new MyCustomView(getContext());
  myView.layout(0, 0, 100, 100);
  l.addView(myView);
  //draw things in myView
  myView.getBitmap();
}

关于java - 在 AndroidTestCase 中设置 View 的宽度和高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23548545/

相关文章:

java - 无法使用打印机打印标签

java 14 nullpointerexception 没有详细信息

android - 创建自定义图库 - 覆盖 onFling

Android 测试 - 信号质量

java - Android 测试构造函数中的异常 NoClassDefFoundError

java - 如何检查 Java 上的 SSLSocket 连接是否正常?

java - 如何组织数据供另一个对象使用?

javascript - 我的加速度计和canvas 2d 做错了什么?安卓

java - 在特定选项卡中启动 Android 应用程序

android - 当您必须使用父 Activity 引用时,如何使用 `FragmentScenario` 单独测试 Fragment