1. 程式人生 > >LinearLayout動態新增子View點選事件

LinearLayout動態新增子View點選事件

XML佈局檔案

 <LinearLayout
            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", "vpn", "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);
            }
        }
    }

}