因为在开发LockPri2时, 在界面输入密码的地方想设置一个浮动窗体, 当主窗体加载完成时, 会动画的方式从下至上弹出,
这时候想用ViewStub
主窗体xml:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<com.yzh.lockpri2.widget.ScaledImageView
android:id="@+id/imageBG"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="100dp"
android:paddingBottom="5dp">
<com.yzh.lockpri2.widget.BluredImageView
android:id="@+id/headerBg"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/welcome_title"
android:layout_gravity="center"
style="@style/welcome_bold_info_font"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/welcome_info"
style="@style/welcome_little_info_font"
android:layout_gravity="center_horizontal|bottom"
android:layout_marginBottom="3dp"/>
</FrameLayout>
<ViewStub
android:id="@+id/keyboardStub"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="bottom"
android:inflatedId="@+id/keyboard"
layout="@layout/keyboard"
/>
</FrameLayout>
keyboard是另外一个xml中的布局, 在视图中能正常显示.
然后在代码中:
stub = (ViewStub)findViewById(R.id.keyboardStub);
stub.inflate();
程序执行到 stub.inflate(); 报错 “ViewStub must have a valid layoutResource”. 检查了半天,
才发现是在主xml中设置时使用了标签的用法:
layout="@layout/keyboard"
正确的应该是:
[html] view plain copy
android:layout="@layout/keyboard"
修改后, 执行正常!