Android 동적 탭 추가 및 클릭 이벤트 구현

안 드 로 이 드 개발 을 할 때 동적 으로 탭 을 추가 하여 사용자 가 선택 할 수 있 는 기능 을 만 날 수 있 기 때문에 예 를 들 어 실행 효과 도 는 다음 과 같다.




탭 은 좌우 로 미 끄 러 지 며 선택 할 수 있 습 니 다.클릭 할 때 toast 알림 이 뜨 거나 어떤 탭 을 선 택 했 는 지 취소 합 니 다.동적 으로 TextView 를 탭 으로 추가 하고 TextView 에 배경 을 설정 하 며 selector 선택 기 를 통 해 배경 색 을 바 꾸 어 선택 상태 에 있 는 지 확인 합 니 다.
코드 는 다음 과 같다.
1.태그 의 레이아웃 파일 입 니 다.탭 에 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"
 android:orientation="vertical" >
 
 <TextView
  android:id="@+id/textView1"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_margin="10dp"
  android:background="@drawable/mark_select"
  android:enabled="false"
  android:padding="10dp"
  android:text="TextView" />
 
</LinearLayout>
2.res 폴 더 에 drawable 폴 더 를 새로 만 듭 니 다.탭 의 배경 은@drawable/mark 로 설정 합 니 다.select,코드 는 다음 과 같 습 니 다.

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
 
 <item android:drawable="@drawable/mark_notbeselected" android:state_enabled="false"/>
 <item android:drawable="@drawable/mark_beselected" android:state_enabled="true"/>
 
</selector>
탭 이 선 택 된 상태 일 때 배경 은@drawable/mark 입 니 다.beselected,탭 이 선택 되 지 않 은 상태 일 때 배경 은@drawable/mark 입 니 다.notbeselected
그 중 marknotbeselected 코드 는:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
 
 <solid android:color="#ffffff" />
 
 <corners android:radius="3dip" />
 
 <stroke
  android:width="1dip"
  android:color="#1cb0ba" />
 
</shape>
mark_beselected 코드 는:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
 
 <solid android:color="#1cb0ba" />
 
 <corners android:radius="3dip" />
 
 <stroke
  android:width="1dip"
  android:color="#1cb0ba" />
 
</shape>
3.홈 페이지 레이아웃 파일 에는 수평 스크롤 바 Horizontal ScrollView 가 포함 되 어 있 습 니 다.코드 는 다음 과 같 습 니 다.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:orientation="vertical" >
 
 <HorizontalScrollView
  android:id="@+id/horizontalScrollView1"
  android:layout_width="match_parent"
  android:layout_height="wrap_content" >
 
  <LinearLayout
   android:id="@+id/linearLayout1"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="horizontal" >
  </LinearLayout>
 </HorizontalScrollView>
 
</LinearLayout>
4.MainActivity.java 코드 는 다음 과 같 습 니 다.

public class MainActivity extends Activity {
 
 List<String> list;
 private LinearLayout linearLayout;
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 linearLayout = (LinearLayout) findViewById(R.id.linearLayout1);
 //      
 list = new ArrayList<String>();
 for (int i = 0; i < 10; i++) {
 String str = "  " + i;
 list.add(str);
 }
 //     
 initMarksView();
 }
 private void initMarksView() {
 for (int i = 0; i < list.size(); i++) {
 View view = View.inflate(MainActivity.this, R.layout.mark_layout, null);
 TextView tv = (TextView) view.findViewById(R.id.textView1);
 tv.setText(list.get(i));
 tv.setTag(i);
 view.setTag(false);
 //   view     , onClick  View  
 //     onClick , findViewById,               
 //    ,         
 view.setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View v) {
  // TODO Auto-generated method stub
  TextView tv = (TextView) v.findViewById(R.id.textView1);
  Log.i("dxl", "TextView click");
  if ((Boolean) v.getTag()) {
  v.setTag(false);
  tv.setEnabled(false);
  Toast.makeText(MainActivity.this, "        " + tv.getTag(), Toast.LENGTH_SHORT).show();
  } else {
  v.setTag(true);
  tv.setEnabled(true);
  Toast.makeText(MainActivity.this, "      " + tv.getTag(), Toast.LENGTH_SHORT).show();
  }
 }
 });
 linearLayout.addView(view);
 }
 }
}
이로써 동적 으로 표정 을 추가 하고 탭 클릭 이 벤트 를 처리 할 수 있 는 기능 을 실현 했다.
소스 코드 다운로드:Android 동적 탭 추가 및 클릭 이벤트
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기