Android 사용자 정의 LayoutManager 플 라 워 시트 구현
5695 단어 android양식LayoutManager
본 논문 의 프로젝트 도 사용자 정의 Layout Manager 의 절 호의 자 료 를 배 우 는 것 입 니 다.여러분 이 필요 로 하 는 것 이 있 으 면 잘 읽 으 세 요.
머리말
표 는 제 가 회사 에 들 어간 후부 터 사용 한 컨트롤 입 니 다.처음에 사용 한 것 은ScrollablePanel입 니 다.처음에 꽃 에 매 달 려 후기 에 능숙 하 게 사용 되 었 습 니 다.
사내 가 쓴 컨트롤 은 확실히 나의 일 에 큰 편 의 를 가 져 다 주 었 지만,여전히 몇 가지 문제 가 존재 한다.
제 가 깊이 공부 한 후에
RecyclerView
한 층RecyclerView
으로 만 실현 할 수 있 을 까 생각 합 니 다.LayoutManager
을 통 해 이 사고 가 가능 하 다 는 것 을 알 게 되 었 고RecyclerView
을 바탕 으로 하 는 표 컨트롤TableView
을 실현 할 수 있 을 까 생각 합 니 다.먼저 효 과 를 보 겠 습 니 다.사진 벽
비슷 한 홈 페이지 가 어떻게 이 루어 지 냐 고 물 어 보 는 친구 들 이 많 습 니 다.이 제 는 사용자 정의 뷰 없 이도 쉽게 이 루어 질 수 있 습 니 다.
교과 과정 표
표.
TableView 는 다음 과 같은 특징 을 가지 고 있 습 니 다.
쓰다
첫 번 째 단계|xml 파일 추가
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.fragment.table.TableFragment">
<com.orient.me.widget.rv.adapter.TableView
android:id="@+id/tb"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</FrameLayout>
두 번 째 단계|TableView 가 져 오기코드 를 보 여주 기 전에 TableView 의 주요 함 수 를 알 아 보 세 요.
이것
setTitle(boolean isLeftOpen, boolean isTopOpen)
은 어떤 작용 을 합 니까?표 의 모든 칸 의 길이 와 너비 가 같 도록(하위 보 기 는 가로 방향 에서 여러 칸 을 차지 할 수 있 음)너비 와 높이 는 두 가지 방식 을 사용 합 니 다.코드:
// if use butterknife
// or use findViewById
@BindView(R.id.tb)
TableView mTable;
// TableLayoutManager.MODE_A, 4, 8
mTable.setModeAndValue(TableLayoutManager.MODE_A, 6, 8);
세 번 째 단계|데이터 클래스 만 들 기구현
ICellItem
인터페이스:
public class TableCell implements ICellItem {
private String name;
private String value;
private int type;
private int row;
private int col;
private int widthSpan;
private int heightSpan;
//... Get Set
@Override
public int getRow() {
return row;
}
@Override
public int getCol() {
return col;
}
@Override
public int getWidthSpan() {
return widthSpan;
}
@Override
public int getHeightSpan() {
return heightSpan;
}
}
4 단계|어댑터 설정
private TableAdapter<TableCell> mAdapter;
protected void initWidget(View root) {
//
mTable.setAdapter(mAdapter = new TableAdapter<TableCell>(new ArrayList<>()) {
@Override
public int getItemLayout(TableCell tableCell, int pos) {
// ...
//
return R.layout.table_cell_content_item;
}
@Override
public BaseAdapter.ViewHolder<TableCell> onCreateViewHolder(View root, int itemType) {
// itemType
// ViewHolder
return new ContentHolder(root);
}
});
}
// ViewHolder
class ContentHolder extends BaseAdapter.ViewHolder<TableCell>{
TextView mContent;
public ContentHolder(View itemView) {
super(itemView);
mContent = itemView.findViewById(R.id.tv_name);
}
@Override
protected void onBind(TableCell tableCell) {
mContent.setText(tableCell.getValue());
}
}
다섯 번 째 단계|재 측량만약
TableView
에 사 용 된 모델 이Mode_A
,Mode_C
과Mode_D
이 라면 재 측정 이 필요 합 니 다.
mTable.post(() -> mTable.reMeasure());
총결산전체적으로 말 하면
TableView
의 핵심 은TableLayoutManager
,즉RecyclerView
중의LayoutManager
입 니 다.수시로 가로 세로 로 전환 할 수 있 는GridLayoutManager
과 비슷 합 니 다.만약 에 여러분 들 이TableView
에 관심 이 있다 면 저 는 후속 적 인 글 에서 원 리 를 깊이 있 게 하 겠 습 니 다.마지막 으로 프로그래머 에 게 배 워 야 할 지식 내용,기술 이 너무 많 습 니 다.환경 에서 도태 되 지 않 으 려 면 자신 을 계속 향상 시 켜 야 합 니 다.환경 에 적응 하 는 것 이 아니 라 환경 에 적응 하 는 것 입 니 다!
위 에서 설명 한 것 은 소 편 이 소개 한 Android 사용자 정의 LayoutManager 구현 플 라 워 시트 입 니 다.도움 이 되 셨 으 면 좋 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.