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 동적 탭 추가 및 클릭 이벤트
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.