以编程方式将一个LinearLayout附加到另一个LinearLayout中



我正在尝试创建一个活动,该活动将在LinearLayout中添加自定义视图。我正试图在sample_answer_view.xml中添加LinearLayout这是sample_answer_view.xml 的代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/answer_num_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="X)"
android:layout_margin="10dp"/>
<Button
android:id="@+id/answer_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="Button" />

这是SampleAnswerView.java 的代码

package com.example.sxoli_odigisis;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
public class SampleAnswerView extends LinearLayout {
private TextView answer_num_tv;
private Button answer_btn;
public SampleAnswerView(Context context){
super(context);
initializeViews(context);
}
public SampleAnswerView(Context context, AttributeSet attrs){
super(context, attrs);
initializeViews(context);
}
public SampleAnswerView(Context context, AttributeSet attrs, int defStyle){
super(context, attrs, defStyle);
initializeViews(context);
}
public void initializeViews(Context context){
LayoutInflater inflater = (LayoutInflater) 
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.sample_answer_view, this);
}
}

例如,我如何在代码为的线性布局中添加此视图2次

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">

使用MainActivity.java中添加的java

因此,我正试图创建一个应用程序,从数据库中获取可能的答案,但在从数据库中获得项目之前,可能的答案数量是未知的。假设这个问题有三个可能的答案。使用for循环,它将生成3个项目。这些项目将是添加到LinearLayout中的按钮和文本视图(它是sample_answer_view.xml 中的代码

项目应添加到另一个LinearLayout中的MainActivity中。

提前谢谢!

尝试在MainActivity代码中添加以下代码,并相应地调整

LinearLayout mainLayout = (LinearLayout)findViewById(R.id.yourmainlayout);
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View itemBox = inflater.inflate(R.layout.the_layout_you_want_to_add);
mainLayout.addView(itemBox);

如果您想更改布局(主要或项目框(的按钮文本

Button btn1=(TextView)itemBox.findviewbyId(R.id.button1);
btn1.settext("TEST");

以下是您需要的

在布局文件中

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" />

在活动中

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_blank);
LinearLayout root = findViewById(R.id.root);
int numberOfAnswers = 3; //assume 3
for (int i = 0; i < numberOfAnswers; i++) {
View child = View.inflate(this, R.layout.item, null);
root.addView(child);
}
}

最新更新