首页 > 代码库 > Android_ViewStub

Android_ViewStub

主窗体xml:

[html] view plaincopy
  1. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     tools:context=".MainActivity" >  
  6.       
  7.     <com.yzh.lockpri2.widget.ScaledImageView   
  8.         android:id="@+id/imageBG"  
  9.         android:layout_width="match_parent"  
  10.         android:layout_height="match_parent"/>  
  11.   
  12.     <FrameLayout  
  13.         android:layout_width="match_parent"  
  14.         android:layout_height="100dp"  
  15.         android:paddingBottom="5dp">  
  16.           
  17.         <com.yzh.lockpri2.widget.BluredImageView   
  18.             android:id="@+id/headerBg"  
  19.             android:layout_width="match_parent"  
  20.             android:layout_height="match_parent"/>  
  21.               
  22.   
  23.         <TextView  
  24.             android:layout_width="wrap_content"  
  25.             android:layout_height="wrap_content"  
  26.             android:text="@string/welcome_title"   
  27.             android:layout_gravity="center"  
  28.             style="@style/welcome_bold_info_font"  
  29.             />  
  30.           
  31.           <TextView  
  32.             android:layout_width="wrap_content"  
  33.             android:layout_height="wrap_content"  
  34.             android:text="@string/welcome_info"   
  35.             style="@style/welcome_little_info_font"  
  36.             android:layout_gravity="center_horizontal|bottom"  
  37.             android:layout_marginBottom="3dp"/>  
  38.     </FrameLayout>  
  39.       
  40.     <ViewStub   
  41.         android:id="@+id/keyboardStub"  
  42.         android:layout_width="match_parent"  
  43.         android:layout_height="match_parent"  
  44.         android:layout_gravity="bottom"  
  45.         android:inflatedId="@+id/keyboard"  
  46.         layout="@layout/keyboard"  
  47.         />  
  48.   
  49. </FrameLayout>  

keyboard是另外一个xml中的布局, 在视图中能正常显示.

 

然后在代码中:

[java] view plaincopy
  1. stub = (ViewStub)findViewById(R.id.keyboardStub);  
  2. stub.inflate();  


程序执行到 stub.inflate(); 报错 "ViewStub must have a valid layoutResource". 检查了半天,

才发现是在主xml中设置时使用了<include>标签的用法:

[html] view plaincopy
  1. layout="@layout/keyboard"  

正确的应该是:

[html] view plaincopy
  1. android:layout="@layout/keyboard"  


修改后, 执行正常!

Android_ViewStub