android 动态切换view

需求情形:需要在一个activity中更换布局,如点击按钮,跳转到另外一个界面。

如果两个布局文件都是LinearLayout 或者FrameLayout的话,可以使用LinearLayout和FrameLayout两个类来管理当前的layout,如addView 或者removeView;可是如果一个是LinearLayout,另外一个是FrameLayout的话,这种就不行了,因为两者的属性不同,表现结果不一样。

解决办法:使用不同的Layout的xml文件或者动态设定View。

关键语句:setContentView(R.layout.XXX)或者setContentView(XXXView)

第一个直接使用layout xml文件,第二个使用动态生成一个LinearLayout 或者FrameLayout。

前者的好处是方便使用xml中的android:属性。

关键坑:如果xml文件中使用的是继承控件类(继承的基础的控件,如View Button TextView等),在初始化实例的时候,如果遇到使用强制类型转换失败,如:

XXXView myView = (XXXView)findViewById(R.id.XXXView)

调用的是public XXXView (Context context, AttributeSet attrs)构造函数。

可以实例化View,然后在转成XXXView,如:

View imgView = findViewById(R.id.XXX);

扫描二维码关注公众号,回复: 3833171 查看本文章

XXXView  mView = (XXXView )imgView;

然后再去设定mView的其他需要使用参数初始化的东西。

经验:遇到实例化失败的情况,可以先不实例化,在xml中使用<X.X.X.XXXView  ...  />来声明控件,在使用setContentView函数后看是否能够正常显示,正常显示则证明public XXXView(Context context)构造函数是成功的,之后在去设置其他需要初始化的类属性或者成员属性。

猜你喜欢

转载自blog.csdn.net/u200814342A/article/details/69387236
今日推荐