Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在android应用程序开发中,如何使通用布局包含在其他布局中,但动态更改通用布局中的属性?_Java_Android_Xml - Fatal编程技术网

Java 在android应用程序开发中,如何使通用布局包含在其他布局中,但动态更改通用布局中的属性?

Java 在android应用程序开发中,如何使通用布局包含在其他布局中,但动态更改通用布局中的属性?,java,android,xml,Java,Android,Xml,我对android非常陌生,所以请原谅我的无知 我的主布局是一个垂直线性布局,我想在其中包括其他重复布局。但是,我想在包括的布局对象的信息被改变。例如,包含的通用布局将是一个水平线性布局,并且将有一个TextView和一个EditText。在我的主布局中,我想包括其中两个通用布局。如何动态更改TextView中的文本以及每个include的EditText?另外,我将如何动态更改这些包含的布局的数量 我的主要布局如下所示: <?xml version="1.0" encoding="utf

我对android非常陌生,所以请原谅我的无知

我的主布局是一个垂直线性布局,我想在其中包括其他重复布局。但是,我想在包括的布局对象的信息被改变。例如,包含的通用布局将是一个水平线性布局,并且将有一个TextView和一个EditText。在我的主布局中,我想包括其中两个通用布局。如何动态更改TextView中的文本以及每个include的EditText?另外,我将如何动态更改这些包含的布局的数量

我的主要布局如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <include android:id="@+id/generic" />
    <include android:id="@+id/generic" />
    <include android:id="@+id/generic" />
    .
    .
    .
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/generic"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >
    <TextView .../>
    <EditView .../>
</LinearLayout>

.
.
.
我的通用布局如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <include android:id="@+id/generic" />
    <include android:id="@+id/generic" />
    <include android:id="@+id/generic" />
    .
    .
    .
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/generic"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >
    <TextView .../>
    <EditView .../>
</LinearLayout>


希望我足够清楚。谢谢

如果您需要对布局进行动态操作,请使用代码:

{// add player name
            playerTxt = new RoboTextView(context);
            LayoutParams playerParams = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
                    ViewGroup.LayoutParams.WRAP_CONTENT);
            if (useSingleLine) {
                playerParams.addRule(CENTER_VERTICAL);
                playerParams.addRule(ALIGN_PARENT_LEFT);
            } else {
                playerParams.addRule(RIGHT_OF, AVATAR_ID);
                playerParams.addRule(ALIGN_TOP, AVATAR_ID);
            }

            playerTxt.setTextSize(playerTextSize);
            playerTxt.setTextColor(playerTextColor);
            playerTxt.setId(PLAYER_ID);
            playerTxt.setPadding((int) (4 * density), 0, 0, 0);
            playerTxt.setMarqueeRepeatLimit(2);
            playerTxt.setEllipsize(TextUtils.TruncateAt.MARQUEE);
            playerTxt.setFont(FontsHelper.BOLD_FONT);

            addView(playerTxt, playerParams);
        }
您可以创建自己的自定义
MyLinearLayout扩展LinearLayout
,并使用自己的ID绑定视图:

public static final int AVATAR_ID = 0x00004400;
public static final int PLAYER_ID = 0x00004401;
public static final int RATING_ID = 0x00004402;
public static final int FLAG_ID = 0x00004403;
public static final int PREMIUM_ID = 0x00004404;
public static final int CAPTURED_ID = 0x00004405;
public static final int TIME_LEFT_ID = 0x00004406;
如果需要重复添加几个类似的视图(或从一个布局完全相同的视图),可以使用基本ID:

public static final int BUTTON_PREFIX = 0x00002000;
并通过增加类似的计数器来添加其他小部件(视图)

int getButtonId(ButtonIds buttonId) {
    return BUTTON_PREFIX + buttonId.ordinal();
}

但请记住,您的id不应在同一布局中与其他id交叉

如果您需要对布局进行动态操作,请在代码中执行:

{// add player name
            playerTxt = new RoboTextView(context);
            LayoutParams playerParams = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
                    ViewGroup.LayoutParams.WRAP_CONTENT);
            if (useSingleLine) {
                playerParams.addRule(CENTER_VERTICAL);
                playerParams.addRule(ALIGN_PARENT_LEFT);
            } else {
                playerParams.addRule(RIGHT_OF, AVATAR_ID);
                playerParams.addRule(ALIGN_TOP, AVATAR_ID);
            }

            playerTxt.setTextSize(playerTextSize);
            playerTxt.setTextColor(playerTextColor);
            playerTxt.setId(PLAYER_ID);
            playerTxt.setPadding((int) (4 * density), 0, 0, 0);
            playerTxt.setMarqueeRepeatLimit(2);
            playerTxt.setEllipsize(TextUtils.TruncateAt.MARQUEE);
            playerTxt.setFont(FontsHelper.BOLD_FONT);

            addView(playerTxt, playerParams);
        }
您可以创建自己的自定义
MyLinearLayout扩展LinearLayout
,并使用自己的ID绑定视图:

public static final int AVATAR_ID = 0x00004400;
public static final int PLAYER_ID = 0x00004401;
public static final int RATING_ID = 0x00004402;
public static final int FLAG_ID = 0x00004403;
public static final int PREMIUM_ID = 0x00004404;
public static final int CAPTURED_ID = 0x00004405;
public static final int TIME_LEFT_ID = 0x00004406;
如果需要重复添加几个类似的视图(或从一个布局完全相同的视图),可以使用基本ID:

public static final int BUTTON_PREFIX = 0x00002000;
并通过增加类似的计数器来添加其他小部件(视图)

int getButtonId(ButtonIds buttonId) {
    return BUTTON_PREFIX + buttonId.ordinal();
}
但请记住,您的id不应在同一布局中与其他id交叉

如何动态更改TextView中的文本以及每个include的EditText

您可以通过给每个唯一的
id
s来实现这一点。所以

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <include android:id="@+id/include1" />
    <include android:id="@+id/include2" />
然后从中获取
TextView
。假设包含的
布局中的
TextView
具有
id
TextView 1

TextView tv1 = (TextView) ll1.findViewById(R.id.textView1); 
现在,您可以使用
tv1

另外,我将如何动态更改这些包含的布局的数量

您可以对要将这些布局添加到的任何父布局调用
addView()

如何动态更改TextView中的文本以及每个include的EditText

您可以通过给每个唯一的
id
s来实现这一点。所以

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <include android:id="@+id/include1" />
    <include android:id="@+id/include2" />
然后从中获取
TextView
。假设包含的
布局中的
TextView
具有
id
TextView 1

TextView tv1 = (TextView) ll1.findViewById(R.id.textView1); 
现在,您可以使用
tv1

另外,我将如何动态更改这些包含的布局的数量


您可以在要将这些布局添加到的任何父布局上调用
addView()

如果主布局包含包含的布局以外的其他组件,该怎么办?然后动态更改包含的布局将丢弃主布局的组件。您知道在更改包含的布局时,应该如何保留主要布局组件吗?你能看看我的问题吗。你会帮我很多忙的。如果主布局包含除包含布局之外的其他组件,该怎么办?然后动态更改包含的布局将丢弃主布局的组件。您知道在更改包含的布局时,应该如何保留主要布局组件吗?你能看看我的问题吗。你会帮我很多忙的。