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