Android:创建 UI 组件并以编程方式重用它

Posted

技术标签:

【中文标题】Android:创建 UI 组件并以编程方式重用它【英文标题】:Android:Creating UI Components and reusing it programmatically 【发布时间】:2012-05-01 16:08:50 【问题描述】:

我创建了一个简单的 UI 并由 id mainContainer2 设置。 我想知道这样的事情是否可以在循环中重用它,例如

<LinearLayout
    android:id="@+id/mainContainer2"
    android:layout_
    android:layout_
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_
        android:layout_
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_
        android:layout_
        android:layout_marginLeft="10dp"
        android:src="@drawable/ic_launcher" />

    <LinearLayout
        android:layout_
        android:layout_ >

        <TextView
            android:id="@+id/textView2"
            android:layout_
            android:layout_
            android:text="Medium Text"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <TextView
            android:id="@+id/textView3"
            android:layout_
            android:layout_
            android:text="Medium Text"
            android:textAppearance="?android:attr/textAppearanceMedium" />
    </LinearLayout>

    <Button
        android:id="@+id/button1"
        android:layout_
        android:layout_
        android:text="Button" />
</LinearLayout>

LinearLayout mainContainer = new LinearLayout(this);
mainContainer.setOrientation(LinearLayout.VERTICAL);

TextView textoqualquer = new TextView(this);
textoqualquer.setText("textoqualquer");
mainContainer.addView(textoqualquer);

LinearLayout maincontainer = new LinearLayout(this);
maincontainer.setOrientation(LinearLayout.VERTICAL);
maincontainer.findViewById(R.id.mainContainer2);



mainContainer.addView(maincontainer);

setContentView(mainContainer);

【问题讨论】:

【参考方案1】:

我不确定你在问什么。但是你可以在任何需要的地方使用相同的xml ui,只需像这样膨胀它

LayoutInflater mInflater = LayoutInflater.from(context);
LinearLayout yourLayout = (LinearLayout)mInflater.inflate(R.layout.your_layout, null);

然后您可以在需要的地方使用布局。 同样在 xml 文件中,您可以使用“包含”或“合并”标签来重用另一个 xml 布局 喜欢

<include layout="@layout/okcancelbar_button"/>

【讨论】:

【参考方案2】:

我认为在这种情况下您可以使用布局充气器。使用

LinearLayout headerView = (LinearLayout) View.inflate(this, R.layout.layout_name, null);

这将为您提供布局的完整父布局,然后您可以重用您的完整视图或使用该视图的一部分来重用

view_type my_view = (view_type)headerview.findviewbyid (R.id.view_name)

【讨论】:

以上是关于Android:创建 UI 组件并以编程方式重用它的主要内容,如果未能解决你的问题,请参考以下文章

按单词包装 UILabel 并以编程方式扩展 UITableViewCell 高度

Android Fragment的特点

框架中的自定义 ui 组件未呈现到故事板

有没有办法以编程方式检测 Android 应用程序的 UI 组件?

故事板中的子类 viewController 并以编程方式从子类更改 UI

界面编程与视图(View)组件