【发布时间】:2011-08-21 20:39:33
【问题描述】:
所以我有一个单独文件的布局,所以我对其进行了膨胀。然后我更改布局中的文本视图和图像,并调用 measure,但是当我尝试测量布局时得到一个空指针。我一生都无法弄清楚为什么会这样。我最终试图将布局转换为位图。
View inflatedView = ((Activity)getContext()).getLayoutInflater().inflate(R.layout.my_layout, null);
inflatedView.measure(getWidth(), getHeight());
inflatedView.layout(0, 0, inflatedView.getMeasuredWidth(),inflatedView.getMeasuredHeight());
Bitmap viewAsImage = Bitmap.createBitmap(inflatedView.getWidth(), inflatedView.getHeight(), Bitmap.Config.ARGB_8888);
Canvas viewCanvas = new Canvas(viewAsImage);
这里是 XML
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_gravity="bottom"
android:id="@+id/my_layout"
android:background="@color/transparent_black">
<ImageView android:id="@+id/image_left"
android:layout_width="48dip" android:layout_height="48dip"
android:layout_centerVertical="true" android:layout_alignParentLeft="true"
android:scaleType="fitXY" android:maxWidth="48dip" android:maxHeight="48dip"
android:padding="5dip" />
<ImageView android:id="@+id/image_right"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_marginRight="20dip" android:src="@drawable/arrow"
android:layout_centerVertical="true" android:scaleType="fitXY"
android:maxWidth="48dip" android:maxHeight="48dip"
android:layout_alignParentRight="true" />
<TextView android:paddingLeft="4dip" android:paddingRight="1dip"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_toRightOf="@id/image_left"
android:layout_toLeftOf="@id/image_right" android:id="@+id/some_name"
android:maxLines="1" android:ellipsize="end" android:textSize="20sp"
android:textColor="@color/white"
android:layout_centerVertical="true"
android:textStyle="normal" />
</RelativeLayout>
在 measure() 行,它抛出一个空指针,我已经验证 getWidth 和 getHeight 给出的值是合法的。
有什么想法吗?
谢谢!
【问题讨论】:
-
把 xml 文件给我们,漂亮的 :)
-
请发布您的logcat和xml,也许这些可以进一步解释错误。
-
您确定
inflatedLayout不为空吗? -
什么时候放大视图?如果在 onCreate 中,您还无法获得测量值,因为视图尚未调整大小
-
我在一个方法中手动扩展视图,而不是在 onCreate 中,因为这个视图不是(也不能)是正在使用的当前视图的一部分。
标签: java android android-layout