【问题标题】:How to initialize a UI component from a layout file如何从布局文件初始化 UI 组件
【发布时间】:2013-05-29 11:07:55
【问题描述】:

我是安卓新手。我可以这样做吗:我有一个包含线性布局的 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>

从代码的任何部分,我可以将它加载到一个线性布局,如:

线性布局 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、.. .

【问题讨论】:

    标签: android android-layout


    【解决方案1】:

    我可以从代码的任何部分将它加载到一个线性布局中,例如:

    不是你拥有的代码:

    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)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多