与xml资源一起创建自定义视图时,避免使用不必要的视图嵌套

时间:2013-11-21 07:27:08

标签: android android-layout

我正在尝试创建自定义视图,并且我从LinearLayout扩展:

public class CustomView extends LinearLayout {
    private ImageView mPrevImgView;
    public CustomView(Context context, AttributeSet attrs) {
        super(context, attrs);
        View root = ((LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.custom, null);
        this.addView(root);

        mPrevImgView = root.findViewById(R.id.xx);
        ....
    }
}

layout/custom.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">
    <ImageView
        android:id="@+id/xx"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
    .......
</LinearLayout>

然后我尝试以这种方式使用它:

<CustomView android:layout_width.....>
  ...
</CustomView>

这可以按预期工作。

然而,CustomView本身似乎是LinearLayout,然后在构造函数中添加另一个LinearLayout,这会导致两个LinearLayout嵌套,这是不必要的。我想知道是否有可能避免这种情况?

1 个答案:

答案 0 :(得分:0)

// try this way 
**custom.xml**
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/xx"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:adjustViewBounds="true"/>