LinearLayout动态添加View 以及点击事件处理

    XML布局文件

             android:id="@+id/ll_titles"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" />

      实现代码

public class MainActivity extends FragmentActivity implements OnClickListener {
    String[] jsons = new String[] { "advanced", "base", "fuwuqi", "human",
            "openstack", "router", "sql", "", "walls" };

    String[] names = new String[] { "网工基础", "xxxxx", "yyyyy", "xxxxxx",
            "zzzzz", "dddddd", "eeeeee", "sssssss", "防火墙" };

    private LinearLayout ll_titles;

    private ViewPager viewPager;

    @SuppressWarnings("deprecation")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        viewPager = (ViewPager) findViewById(R.id.viewPager);
        ll_titles = (LinearLayout) findViewById(R.id.ll_titles);

        // 设置数据适配器
        viewPager.setAdapter(new FragmentPagerAdapter(
                getSupportFragmentManager()) {

            @Override
            public int getCount() {
                return jsons.length;
            }

            @Override
            public Fragment getItem(int position) {
                Fragment fragment = DataFragment.getInstance(jsons[position]);
                return fragment;
            }
        });

        // 线性布局添加数据

        for (int i = 0; i < names.length; i++) {
            // 创建textView
            TextView textView = new TextView(this);

            if (i == 0) {
                textView.setTextColor(Color.RED);
            } else {
                textView.setTextColor(Color.GRAY);
            }
            // 设置布局参数,注意倒包
            LayoutParams layoutparams = new LayoutParams(
                    LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
            // 设置外间距
            layoutparams.setMargins(10, 5, 10, 5);
            // 设置内容
            textView.setText(names[i]);

            textView.setOnClickListener(this);
            // 添加控件
            ll_titles.addView(textView, layoutparams);
        }

        viewPager.setOnPageChangeListener(new OnPageChangeListener() {

            @Override
            public void onPageSelected(int posisiton) {

                for (int i = 0; i < ll_titles.getChildCount(); i++) {
                    TextView textView = (TextView) ll_titles.getChildAt(i);
                    if (posisiton == i) {
                        textView.setTextColor(Color.RED);
                    } else {
                        textView.setTextColor(Color.GRAY);
                    }
                }
            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {

            }

            @Override
            public void onPageScrollStateChanged(int arg0) {

            }
        });
    }

    @Override
    public void onClick(View v) {
        // 判断当前点击了哪一个
        for (int i = 0; i < ll_titles.getChildCount(); i++) {
            TextView tv = (TextView) ll_titles.getChildAt(i);
            if (v == tv) {
                // 让对应的这个textView变红
                tv.setTextColor(Color.RED);
                viewPager.setCurrentItem(i);
            } else {
                tv.setTextColor(Color.GRAY);
            }
        }
    }

}



你可能感兴趣的:(LinearLayout动态添加View 以及点击事件处理)