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

时间:2013-10-08 12:33:36

标签: android android-view

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

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

最后,它应该像......

enter image description here

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);
    }
}

}

但我可以在循环后只添加一次视图。

请帮我解决这个问题。谢谢。

3 个答案:

答案 0 :(得分:0)

我认为你总是添加相同的视图,你应该在循环中创建一个新的视图,然后给它充气。

答案 1 :(得分:0)

试试这个:

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);
    }
}

答案 2 :(得分:0)

您发布的代码确实为您的LinearLayout添加了6个不同的视图。那部分应该没问题。

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

你能发送你的布局文件吗?