Android TimePicker 와 DatePicker 크기 조정
최근 에 app 을 썼 습 니 다. DatePicker 와 TimePicker 를 병렬 로 표시 합 니 다.그러나 안 드 로 이 드 내부 에서 DatePicker 와 TimePicker 크기 를 고정 시 켜 4.5 인치 휴대 전화 화면 한 줄 에 하나만 표시 되 고 다른 하 나 는 완전히 표시 되 지 않 습 니 다.인터넷 에서 검색 해 보 니 좋 은 해결 방안 이 없 었 고 다른 사람 이 쓴 사용자 정의 컨트롤 을 보 았 습 니 다. 연 구 를 통 해 두 구성 요소 의 크기 를 조정 하 는 방법 을 발견 하 였 습 니 다.
이전 효 과 를 조정 하지 않 았 습 니 다. 그림 참조: TimePicker 는 아주 작은 부분 만 표 시 됩 니 다.
TimePicker 와 DatePicker 의 모든 선택 상 자 는 NumberPicker 이 고 NumberPicker 는 Layout Params 를 바 꿀 수 있 기 때문에 다음 과 같은 방향 으로 조정 할 수 있 습 니 다.
1. DatePicker 와 TimePicker 의 글꼴 크기 를 변경 합 니 다. DatePicker 와 TimePicker 가 줄 어 든 후에 글 자 를 완전히 표시 하기 위해 서 입 니 다.
2. DatePicker 와 TimePicker 에 있 는 NumberPicker 받 기
3. 얻 은 NumberPicker 의 폭 을 바 꾸 면 큰 성 과 를 거 둘 수 있 습 니 다.
1. 글꼴 크기 변경
글꼴 크기 를 바 꾸 는 방법 은 몇 가지 가 있 습 니 다. 통일 을 위해 저 는 테마 자원 으로 글꼴 크기 를 바 꾸 었 습 니 다. 코드 는 다음 과 같 습 니 다.
2. DatePicker 와 TimePicker 에 있 는 NumberPicker 받 기
DatePicker 와 TimePicker 는 모두 FrameLayout 클래스 를 계승 하기 때문에 함 수 는 다음 과 같이 정의 할 수 있 습 니 다.
/**
* FrameLayout
* @param tp
*/
private void resizePikcer(FrameLayout tp){
List npList = findNumberPicker(tp);
for(NumberPicker np:npList){
resizeNumberPicker(np);
}
}
이 함 수 는 매우 간단 합 니 다. 매개 변 수 는 FrameLayout 입 니 다. 호출 할 때 하위 클래스 에 들 어가 면 됩 니 다.이 함 수 는 내 가 사용자 정의 findNumberPicker 함 수 를 호출 하여 tp 에 있 는 모든 NumberPicker 를 찾 은 다음 사용자 정의 resizeNumberPicker 로 크기 를 조정 합 니 다.
그 중: findNumberPicker 정 의 는 다음 과 같 습 니 다.
/**
* viewGroup numberpicker
* @param viewGroup
* @return
*/
private List findNumberPicker(ViewGroup viewGroup){
List npList = new ArrayList();
View child = null;
if(null != viewGroup){
for(int i = 0;i result = findNumberPicker((ViewGroup)child);
if(result.size()>0){
return result;
}
}
}
}
return npList;
}
이 함 수 는 view Group 을 옮 겨 다 니 는 하위 요소 입 니 다. NumberPicker 라면 집합 에 가입 합 니 다.LinearLayout 레이아웃 이 라면 이 함 수 를 재 귀적 으로 호출 하여 레이아웃 에 있 는 NumberPicker 를 찾 습 니 다.
resizeNumberPicker 정 의 는 다음 과 같 습 니 다.
/*
* numberpicker
*/
private void resizeNumberPicker(NumberPicker np){
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(50, LayoutParams.WRAP_CONTENT);
params.setMargins(10, 0, 10, 0);
np.setLayoutParams(params);
}
이 함 수 는 조정 기능 을 완성 하고 간단 합 니 다. new 레이아웃 매개 변 수 를 설정 한 다음 에 폭 을 50 으로 설정 하고 높이 는 wrap 입 니 다.content, setMargins 를 통 해 사 이 드 거 리 를 설정 하고 NumberPicker 의 레이아웃 매개 변 수 를 이 값 으로 설정 합 니 다.
이 를 준비 하면 호출 이 가능 합 니 다. 호출 도 간단 합 니 다. 바로 DatePicker 와 TimePicker 대상 을 얻 은 다음 에 resizePicker (DatePicker) 와 resizePicker (TimePicker) 를 사용 하면 됩 니 다.
아래 에 나의 호출 코드 를 붙 여 라.
DatePicker datePicker = (DatePicker)rootView.findViewById(R.id.date);//
TimePicker timePicker = (TimePicker)rootView.findViewById(R.id.time);//
resizePikcer(datePicker);// datepicker
resizePikcer(timePicker);// timepicker
큰 성 과 를 거 두 었 습 니 다. 모든 절차 가 끝 난 후에 DatePicker 와 TimePicker 는 나란히 표시 할 수 있 습 니 다. 제 표시 결 과 는 다음 그림 과 같 습 니 다.
DatePicker 의 분할 선 색상 설정
/**
*
*
* @param datePicker
*/
private void setDatePickerDividerColor(DatePicker datePicker){
// Divider changing:
// mSpinners
LinearLayout llFirst = (LinearLayout) datePicker.getChildAt(0);
// NumberPicker
LinearLayout mSpinners = (LinearLayout) llFirst.getChildAt(0);
for (int i = 0; i < mSpinners.getChildCount(); i++) {
NumberPicker picker = (NumberPicker) mSpinners.getChildAt(i);
Field[] pickerFields = NumberPicker.class.getDeclaredFields();
for (Field pf : pickerFields) {
if (pf.getName().equals("mSelectionDivider")) {
pf.setAccessible(true);
try {
pf.set(picker, new ColorDrawable(ResourceUtil.getColor(R.color.com_text_red)));
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (NotFoundException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
break;
}
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.