android 는 ScrollerView 를 사용 하여 위아래 로 스크롤 할 수 있 는 분류 표시 줄 인 스 턴 스 를 실현 합 니 다.
9215 단어 ScrollerView위아래 로 스크롤
다음은 효과 전시 만 을 고려 하여 ScrollerView 를 사용 하여 다음 그림 에서 보 여 준 스크롤 가능 한 여러 항목 의 분 류 를 실현 하고 여러분 과 함께 새로운 방향 을 공유 하기 위해 서 입 니 다.(평소:재 활용 성 등 을 고려 하면 흠 이 있 는 것 이 분명 합 니 다~)
특징 설명:
1.위아래 로 스크롤 가능
2.격자 레이아웃 과 유사 한 스타일
3.하위 항목 은 클릭 이벤트 가 있 음
이 효 과 를 처음 봤 을 때 가장 먼저 생각 나 는 것 은 유형 별 RecyclerView 나 ListView 를 사용 하 는 것 이다. ,안에 GridView 를 덧 붙 여 실현 합 니 다.
하지만 스크롤 러 뷰 를 돌 면 스크롤 이 가능 합 니 다.안쪽 으로 순환 해서 하위 아 이 템 을 추가 하면 되 지 않 겠 습 니까?
실현 의 논 리 는 대체로 다음 과 같다.
구체 적 인 실현 은 다음 과 같다.
첫 번 째 단계:레이아웃 에 ScrollerView 를 쓰 고 세로 선형 레이아웃 을 추가 합 니 다.
두 번 째 단계:수직 선형 레이아웃 을 예화 합 니 다.
allhonor_hscroll = (LinearLayout) findViewById(R.id.allhonor_hscroll);
세 번 째 단계:인터넷 요청 데이터 획득
setAllHonorData();
/**
* okhttp
*/
public void setAllHonorData() {
OkHttpUtils
.get()
.url(url)
.build()
.execute(new StringCallback() {
@Override
public void onError(okhttp3.Call call, Exception e, int id) {
Log.e("TAG", "111");
Log.e("TAG", "onError" + e.getMessage());
}
@Override
public void onResponse(String response, int id) {
Log.e("TAG", "222");
Log.e("TAG", "onRespons" + response);
// fastjson
processData(response);
}
@Override
public void onBefore(Request request, int id) {
}
@Override
public void onAfter(int id) {
}
});
}
/**
* fastjson
*
* @param json
*/
private void processData(String json) {
// GsonFormat bean
com.alibaba.fastjson.JSONObject jsonObject = JSON.parseObject(json);
String data = jsonObject.getString("data");
List<AllHonorBean.HornorBean> hornorsList = JSON.parseArray(data, AllHonorBean.HornorBean.class);
//
// String strTest = hornorsList.get(0).getRegion();
// Log.e("TAG", strTest);
// : , for
}
네 번 째 단계:두 가지 아 이 템 의 레이아웃 설정첫 번 째 아 이 템 레이아웃:itemallhornors0.xml
<?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:background="#ffffff"
android:orientation="vertical">
<TextView
android:id="@+id/tv_allhornors_big"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#11000000"
android:gravity="center_vertical"
android:paddingBottom="12dp"
android:paddingLeft="13dp"
android:paddingTop="12dp"
android:text=" "
android:textColor="#000000"
android:textSize="14sp" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#11000000" />
</LinearLayout>
두 번 째 아 이 템 레이아웃:itemallhornors1.xml
<?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="wrap_content"
android:background="#ffffff"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_allhornors_sn0"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:clickable="true"
android:gravity="center"
android:paddingBottom="12sp"
android:paddingTop="12sp"
android:text=" "
android:textColor="#000000"
android:textSize="13sp" />
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="#11000000" />
<!-- text , -->
<TextView
android:id="@+id/tv_allhornors_sn1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:clickable="true"
android:gravity="center"
android:paddingBottom="12sp"
android:paddingTop="12sp"
android:text=""
android:textColor="#000000"
android:textSize="13sp" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#11000000" />
</LinearLayout>
다섯 번 째 단계:조립 데이터
if (hornorsList != null && hornorsList.size() > 0) {
//-->
for (int i = 0; i < hornorsList.size(); i++) {
// item
View globalView = View.inflate(this, R.layout.item_allhornors0, null);
TextView tv_allhornors_big = (TextView) globalView.findViewById(R.id.tv_allhornors_big);
AllHonorBean.HornorBean hornorsListBean = hornorsList.get(i);
String region = hornorsListBean.getRegion();
// for
tv_allhornors_big.setText(region);
//
allhonor_hscroll.addView(globalView);
List<AllHonorBean.HornorBean.FestivalsBean> festivalsList = hornorsListBean.getFestivals();
//--> ,
for (int j = 0; j < festivalsList.size(); j = j + 2) {
// item
View smallView = View.inflate(this, R.layout.item_allhornors1, null);
final TextView tv_sn0 = (TextView) smallView.findViewById(R.id.tv_allhornors_sn0);
TextView tv_sn1 = (TextView) smallView.findViewById(R.id.tv_allhornors_sn1);
//
if (j < festivalsList.size() - 1) {
setListener(tv_sn0, tv_sn1);
}
//
honorName0 = festivalsList.get(j).getFestivalName();
tv_sn0.setText(honorName0);
//
if (j < festivalsList.size() - 1) {
//
honorName1 = festivalsList.get(j + 1).getFestivalName();
tv_sn1.setText(honorName1);
}
//
allhonor_hscroll.addView(smallView);
}
}
}
이벤트 감청 클릭:
private void setListener(final TextView tv_sn0, final TextView tv_sn1) {
// TextView
tv_sn0.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "" + tv_sn0.getText(), Toast.LENGTH_SHORT).show();
}
});
// TextView
tv_sn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "" + tv_sn1.getText(), Toast.LENGTH_SHORT).show();
}
});
}
완성~마지막 효과 다시 보기:
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
javascript 텍스트 그림 상하 스크롤 의 구체 적 인 인 인 스 턴 스 구현<div style="border:#d3d3d3 1px solid;width:100%;"> <div id="demo" style="overflow:hidden;height:160;width:100%;"> <div i...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.