我从CalloutView
扩展了课程RelativeLayout
。目前没有任何方法,它只是重新定义了构造函数。
我也有一个XML布局:
<?xml version="1.0" encoding="utf-8"?>
<com.example.CalloutView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="70dp">
<ImageButton
android:id="@+id/imageButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginRight="6dp"
android:layout_marginTop="6dp"
android:background="@drawable/button_disclose"
android:src="@drawable/disclose" />
</com.example.CalloutView>
我通过此代码扩充CalloutView
实例的布局:
this.calloutView = (CalloutView) ((LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.callout_view, null);
this.calloutView.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, 105));
this.calloutView.measure(MeasureSpec.makeMeasureSpec(400, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(105, MeasureSpec.EXACTLY));
它呈现完美。 ImageButton
出现在它的右侧,就像它应该的那样。
但是当我向CalloutView
添加背景时:
<com.example.CalloutView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="70dp"
android:background="@drawable/callout">
...
</com.example.CalloutView>
它只渲染背景,但ImageButton
不会出现。
我使用NinePatch图像作为背景。如果我用非NinePatch替换它一切正常。 Android中的错误?
主要问题是,如果设置了背景,为什么不呈现ImageButton
?
答案 0 :(得分:0)
我尝试了您的代码,但用RelativeLayout替换了您的自定义布局:
RelativeLayout calloutView = (RelativeLayout) ((LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.main, null);
calloutView.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, 105));
calloutView.measure(MeasureSpec.makeMeasureSpec(400, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(105, MeasureSpec.EXACTLY));
setContentView(calloutView);
和xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="70dp"
android:background="@drawable/ic_launcher">
<ImageButton
android:id="@+id/imageButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginRight="6dp"
android:layout_marginTop="6dp"
android:background="#ff0000"
android:src="@drawable/ic_launcher"
/>
</RelativeLayout>
工作正常:
因此,这必须与您的布局有关。 确保在重新定义的构造函数中,首先调用超级构造函数。
答案 1 :(得分:0)
它看起来像Android 2.3.3中的一个错误。我使用我的PNG文件作为NinePatch作为背景,我得到了这个问题。如果我使用另一个NinePatch,一切都会像它应该的那样。
我无法在Android 3.1上重现此问题。