【问题标题】:c# android adding custom views to Linear Layoutc# android 将自定义视图添加到线性布局
【发布时间】:2016-09-14 02:08:20
【问题描述】:

我正在使用 LinearLayout.AddView 来添加简单的视图。

我可以添加一些东西,比如 textViews 和 editTexts,但是我需要在一个带有一些参数的块中一次添加 4 个元素。

这是我要动态添加的块。

这是一个有4种布局的块,大的一个水平,左一个垂直,2个右水平。

这是用于此的 AXML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/holo_blue_light"
    android:minWidth="25px"
    android:minHeight="25px">
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="88.0dp"
        android:id="@+id/linearLayout1"
        android:minWidth="25px"
        android:minHeight="25px"
        android:weightSum="100">
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:id="@+id/linearLayout2"
            android:layout_weight="60">
            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/editText1"
                android:hint="Servizio" />
            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/editText2"
                android:hint="Descrizione" />
        </LinearLayout>
        <LinearLayout
            android:orientation="horizontal"
            android:minWidth="25px"
            android:minHeight="25px"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:id="@+id/linearLayout3"
            android:layout_weight="20"
            android:layout_gravity="center_vertical">
            <EditText
                android:inputType="number"
                android:layout_width="32.5dp"
                android:layout_height="wrap_content"
                android:id="@+id/editText3"
                android:layout_gravity="center_vertical" />
            <TextView
                android:text="€"
                android:textAppearance="?android:attr/textAppearanceSmall"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/textView1"
                android:layout_gravity="center_vertical" />
        </LinearLayout>
        <LinearLayout
            android:orientation="horizontal"
            android:minWidth="25px"
            android:minHeight="25px"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:id="@+id/linearLayout4"
            android:weightSum="10"
            android:layout_weight="20">
            <EditText
                android:inputType="number"
                android:layout_width="32.5dp"
                android:layout_height="wrap_content"
                android:id="@+id/editText4"
                android:layout_gravity="center_vertical" />
            <TextView
                android:text="€"
                android:textAppearance="?android:attr/textAppearanceSmall"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/textView1"
                android:layout_gravity="center_vertical" />
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

你可以想象我不能像这样一个一个地添加元素。并且每次用户需要时,他都应该能够迭代并添加更多这些块。

我不知道我是否以正确的方式进行操作,因为即使我可以动态添加此块,我应该如何检索每个字段中的信息?

谢谢

【问题讨论】:

    标签: c# android android-layout dynamic customization


    【解决方案1】:

    要动态添加视图,当执行导致添加的操作(例如单击按钮)时,膨胀布局并将其添加到父级。

    示例:

    button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                LayoutInflater layoutInflater = LayoutInflater.from(context);
                View view = layoutInflater.inflate(R.layout.layout_file, rootView);
    
                linearLayout.addView(view);
            }
    });
    

    但是,由于您希望访问所有这些文本字段中的输入,我建议您添加一个使用您提供的布局的自定义视图。这可以提供对您的 EditTexts 输入的访问。将它们存储在 List 中,或者在以后遍历 LinearLayout 的子项。

    【讨论】:

    • Beier,非常感谢,我现在可以添加我的 AXML 布局,但只能添加一次。顺便说一句,我对第二部分感兴趣。我会尝试添加一个自定义视图(即使现在我不知道这意味着什么^^我要去学习)。之后我该如何存储它们?
    • C# 中真的没有关于自定义视图的文档吗?我什么都做不了……
    猜你喜欢
    • 2015-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多