android 动态切换view

Posted 小田田_XOW

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)构造函数是成功的,之后在去设置其他需要初始化的类属性或者成员属性。

以上是关于android 动态切换view的主要内容,如果未能解决你的问题,请参考以下文章

Android动态切换多个View的可编辑/不可编辑模式

Android之动画

android动画笔记

android 中如何用back键,控制View的切换

android.view.WindowManager$BadTokenException报错的原因

[android] 切换界面的通用处理