LayParames动态创建控件和控制相对布局的展示

来源:互联网 发布:甘肃省公务员网络培训 编辑:程序博客网 时间:2024/06/06 08:25

对于动态创建控件一直很抵触的我,今天尝试着扫下我的知识盲点,之前一直是用有道云笔记记录,最近比较依赖csdn尝试着记录一下。

需求:1单纯的实现动态创建布局,2动态控制代码创建的View的显示位置,3,实现类似标签的效果。

我要根据接口返回的数据进行多个View的展示,但是有个问题就是这个数据的个数是不确定的,而且要控制布局的位置,之前本人的做法是码布局,创建足够多的VIew后再在代码里面将这些控件放在一个集合中,在获取数据的时候动态的遍历出数据的大小的同时从集合中取出view用来填充数据。

1,动态创建布局+控制位置:


2,标签效果


public class MainActivity extends Activity {
private LinearLayout rlayout, rlayout2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        rlayout = (LinearLayout) findViewById(R.id.rlayout);
        rlayout2 = (LinearLayout) findViewById(R.id.rlayout2);


        for(int i = 0; i<20; i++){
            if(i%2!=0) {
                rlayout.addView(GetTextView(MainActivity.this, String.valueOf(i),R.color.colorAccent));
            }else{
                rlayout2.addView(GetTextView(MainActivity.this, String.valueOf(i),R.color.aa));
            }
        }
    }


    //宽 高 左 上 右 下
    public TextView GetTextView(Context context, String str,int color){


        TextView textView = new TextView(context);


        textView.setText(str);
        textView.setBackgroundResource(color);
        textView.setTextColor(Color.BLACK);//文字颜色
        textView.setTextSize(18);//文字大小
        textView.setHeight(60);
        return textView;


    }
}

布局:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<LinearLayout
    android:id="@+id/rlayout"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:orientation="vertical">

</LinearLayout>
    <LinearLayout
    android:id="@+id/rlayout2"
        android:layout_toRightOf="@id/rlayout"
        android:layout_weight="1"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:orientation="vertical">

</LinearLayout>
</LinearLayout>

0 0
原创粉丝点击