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);

XXXView  mView = (XXXView )imgView;

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小田田_XOW

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值