티스토리 뷰
Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.
Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.
아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.
How to resize a custom view programmatically?
어떻게 커스텀 뷰를 프로그래밍 방식으로 크기를 조정하나요?
문제 내용
I am coding a custom view, extended from RelativeLayout, and I want to resize it programmatically, How can I do?
저는 RelativeLayout에서 상속받은 커스텀 뷰를 코딩하고 있습니다. 이 뷰를 프로그래밍 방식으로 크기를 조정하고 싶은데, 어떻게 할 수 있을까요?
the custom view Class is something like:
이 커스텀 뷰 클래스는 다음과 같습니다:
public ActiveSlideView(Context context, AttributeSet attr){
super(context, attr);
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if(inflater != null){
inflater.inflate(R.layout.active_slide, this);
}
높은 점수를 받은 Solution
Android throws an exception if you fail to pass the height or width of a view. Instead of creating a new LayoutParams object, use the original one, so that all other set parameters are kept. Note that the type of LayoutParams returned by getLayoutParams is that of the parent layout, not the view you are resizing.
만약 뷰의 너비나 높이를 지정하지 않으면 Android에서 예외를 발생시킵니다. 새 LayoutParams 객체를 생성하는 대신 원래 객체를 사용하여 다른 모든 설정된 매개변수를 유지하십시오. getLayoutParams가 반환하는 LayoutParams의 유형은 크기를 조정하는 보기가 아니라 부모 레이아웃의 유형입니다.
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) someLayout.getLayoutParams();
params.height = 130;
someLayout.setLayoutParams(params);
가장 최근 달린 Solution
This is how it can be done in Kotlin:
이것은 Kotlin으로 작성한 예시입니다.
updateLayoutParams:
val view = layoutInflater.inflate(R.layout.cell, binding.ssss, false).apply {
id = View.generateViewId()
updateLayoutParams {
height = 200
width = 400
}
}
binding.ssss.addView(view)
OR
또는
layoutParams:
val view = layoutInflater.inflate(R.layout.cell, binding.ssss, false).apply {
id = View.generateViewId()
layoutParams.width = 200
layoutParams.height = 200
}
binding.ssss.addView(view)
출처 : https://stackoverflow.com/questions/2963152/how-to-resize-a-custom-view-programmatically
'개발 > 안드로이드' 카테고리의 다른 글
ScrollView 안에 RecyclerView 적용하기 (0) | 2023.02.01 |
---|---|
특정 호스트가 포함된 url 클릭 시 해당 앱 열기 (0) | 2023.02.01 |
안드로이드 앱 전체에 특정 폰트 쉽게 적용하기 (0) | 2023.01.31 |
안드로이드용 차트(그래프) 모음 (0) | 2023.01.31 |
화면 회전시 안드로이드 WebView 재로드 방지하기 (0) | 2023.01.30 |