在android中以编程方式向主视图添加自定义视图

在android中以编程方式向主视图添加自定义视图,android,android-view,Android,Android View,我在一个片段中有两个视图。第一个视图是名为weather.xml的onCreateView()中声明的主视图,第二个视图是project res/layout/weather_column.xml中的视图 我想使用循环以编程方式将weather_column.xml添加到weather.xml 最后,它应该像 import android.os.Bundle; import android.support.v4.app.Fragment; import android.util.Log; imp

我在一个片段中有两个视图。第一个视图是名为weather.xml的onCreateView()中声明的主视图,第二个视图是project res/layout/weather_column.xml中的视图

我想使用循环以编程方式将weather_column.xml添加到weather.xml

最后,它应该像

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;

public class WeatherFragment2 extends Fragment {

private static final String TAG = WeatherFragment2.class.getSimpleName();
LinearLayout bottemLL;
LayoutInflater layoutInflater;
LayoutParams params ;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    params = new LayoutParams(
            LayoutParams.WRAP_CONTENT,      
            LayoutParams.WRAP_CONTENT
    );

    params.gravity = Gravity.RIGHT;
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.weather, container, false);

    layoutInflater = inflater;
    LinearLayout bottemLL = (LinearLayout) v.findViewById(R.id.bottem_ll);

    addView(bottemLL);


    return v;
}

private void addView(LinearLayout bottemLL2) {
    View v ;

    for (int i = 0; i < 6; i++) {
        Log.e(TAG, "i=========="+i);

        v = layoutInflater.inflate(R.layout.weather_column, null);
        bottemLL2.addView(v, params);
    }
}

}

导入android.os.Bundle;
导入android.support.v4.app.Fragment;
导入android.util.Log;
导入android.view.Gravity;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.LinearLayout;
导入android.widget.LinearLayout.LayoutParams;
公共类WeatherFragment2扩展了片段{
私有静态最终字符串标记=WeatherFragment2.class.getSimpleName();
bottemLL直线布局;
LayoutInflater LayoutInflater;
布局参数;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
参数=新布局参数(
LayoutParams.WRAP_内容,
LayoutParams.WRAP_内容
);
params.gravity=gravity.RIGHT;
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图v=充气机。充气(右布局、天气、容器、假);
充气机=充气机;
LinearLayout bottemLL=(LinearLayout)v.findViewById(R.id.bottem\ll);
addView(bottemLL);
返回v;
}
私有void addView(LinearLayout bottemLL2){
观点五;
对于(int i=0;i<6;i++){
Log.e(标签“i====”+i);
v=布局更平坦。充气(R.layout.weather_列,空);
bottemLL2.addView(v,params);
}
}
}
但我只能在执行循环后添加一次视图


请帮我做这个。谢谢。

我认为您总是在添加相同的视图,您应该在循环中创建一个新视图,并将其充气。

尝试以下方法:

private void addView(LinearLayout bottemLL2) 
{
    View v ;
    v = layoutInflater.inflate(R.layout.weather_column, null);

    for (int i = 0; i < 6; i++) 
    {
        Log.e(TAG, "i=========="+i);
        bottemLL2.addView(v, params);
    }
}
private void addView(LinearLayout bottemLL2)
{
观点五;
v=布局更平坦。充气(R.layout.weather_列,空);
对于(int i=0;i<6;i++)
{
Log.e(标签“i====”+i);
bottemLL2.addView(v,params);
}
}

您发布的代码确实为您的线性布局添加了6种不同的视图。所以那部分应该没问题

我想问题是它们太大了,不能放在同一个容器里。尝试修改底层XML-s


您能发送布局文件吗?

出现错误。在第二个回路上添加视图之前,此子回路已经存在父回路。是的,子回路太大。谢谢库普塞夫