如何从布局文件初始化UI组件

时间:2013-05-29 11:07:56

标签: android android-layout

我是新手Android。我可以这样做:我有一个包含线性布局的xml文件:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linearLayoutID"
    android:orientation="vertical"
    android:layout_width="150dp"
    android:layout_height="150dp"
    android:gravity="center">

    <ImageView
            android:id="@+id/imageID"            
            android:contentDescription="@string/nothing"            
            android:layout_width="80dp"
            android:layout_height="80dp"            
            android:scaleType="centerCrop" 
            />

    <TextView 
            android:id="@+id/textID"
            android:layout_width="wrap_content"
            android:layout_height="40dp"
            android:textIsSelectable="false"/>    

</LinearLayout>

从代码的任何部分,我可以将其加载到linearLayout,如:

LinearLayout ll = new LinearLayout(R.id.linearLayoutID);
ImageView iv = (ImageView) ll.findViewById(R.id.imageID);
TextView iv = (TextView) ll.findViewById(R.id.textID);

请记住我想问的问题是来自单独的布局文件,我们不加载到活动或片段中,从而使用findViewByID,我们直接将xml文件加载到UI组件,如LinearLayout,ImageView,..

1 个答案:

答案 0 :(得分:1)

  

从代码的任何部分,我可以将其加载到linearLayout,如:

不使用您拥有的代码:

LinearLayout ll = new LinearLayout(R.id.linearLayoutID);

相反,请使用:

LinearLayout ll = (LinearLayout)getLayoutInflater().inflate(R.layout.whatever_name_you_gave_it, theParentViewGroup, true);

其中:

  • theParentViewGroup是容纳此LinearLayout
  • 的容器
  • 第三个参数是true,如果您希望立即将LinearLayout添加到容器中,或false如果您自己将其添加到容器中(或其他框架代码将添加)它到容器,例如getView()上的ListAdapter}