我知道这看起来有点愚蠢! 如果我错了,请纠正我。
我制作了一个自定义relativeLayout,它具有某种依赖于屏幕大小的动态行为。我需要在这个布局中添加一个imageView,它继承它的尺寸,就像它的父版一样。
我想知道是否有一种方法可以在我的自定义布局类中实现imageview,这样每次我在布局中添加它时,都会出现imageview吗?
答案 0 :(得分:1)
当然,您可以在自定义View
中自动添加所需的任何RelativeLayout
。我看到你可以采取的一些不同方法。
1 - 为自定义RelativeLayout
的内容创建xml布局,如果您有很多观看次数,也可以使用<merge>
作为根标记:
public class CustomRelativeLayout extends RelativeLayout {
private ImageView imageView;
public CustomRelativeLayout(Context context, AttributeSet attrs) {
super(context, attrs);
inflate(context, R.layout.custom_relative_layout, this);
imageView = (ImageView) findViewById(R.id.image_view);
}
}
custom_relative_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/image_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
2 - 以编程方式创建View
public class CustomRelativeLayout extends RelativeLayout {
private ImageView imageView;
public CustomRelativeLayout(Context context, AttributeSet attrs) {
super(context, attrs);
imageView = new ImageView(context);
LayoutParams layoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
imageView.setLayoutParams(layoutParams);
addView(imageView);
}
}
3 - 创建一个xml,其中包含CustomRelativeLayout
及其中的所有子View
,而不是将其包含在<include>
的其他布局中。在View
onFinishInflate()
的参考
public class CustomRelativeLayout extends RelativeLayout {
ImageView imageView;
@Override
protected void onFinishInflate() {
super.onFinishInflate();
imageView = (ImageView) findViewById(R.id.image_view);
}
}
custom_relative_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<com.example.CustomRelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/image_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</com.example.CustomRelativeLayout>
并使用
在其他地方使用它<include layout="@layout/custom_relative_layout"/>