내 질문은 간단합니다
프로그래밍 방식으로 단추 layout_gravity를 설정하는 방법은 무엇입니까?
인터넷에서 이것을 찾았지만 Nullpointer 예외가 발생합니다.
Button MyButton = new Button(this);
LinearLayout.LayoutParams lllp=(LinearLayout.LayoutParams)MyButton.getLayoutParams();
lllp.gravity=Gravity.RIGHT;
MyButton.setLayoutParams(lllp);
MyLinearLayout.addView(MyButton);
어떤 해결책?
답변
자바
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
params.weight = 1.0f;
params.gravity = Gravity.TOP;
button.setLayoutParams(params);
코 틀린
val params = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT
).apply {
weight = 1.0f
gravity = Gravity.TOP
}
중력 값을 어떻게 설정 중력 검사에 중력 .
기본적으로 LayoutParams
부모에 따라 선택해야합니다 . 그것은 할 수있다 RelativeLayout
, LinearLayout
등 …
답변
나는 오래된 스레드를 부활시키는 것을 싫어하지만 이것은 올바르게 대답하지 않은 문제이며 더 나아가이 문제에 직접 직면했습니다.
답변이 마음에 들면 코드까지 아래로 스크롤하십시오.
android : gravity와 android : layout_gravity는 다르게 작동합니다. 여기 내가 읽은 기사가 도움이되었습니다.
기사의 GIST : 높이 / 너비가 할당 된 후 중력이 뷰에 영향을줍니다. 따라서 중력 중심은 FILL_PARENT (자동 여백으로 생각)를 수행 한 뷰에 영향을 미치지 않습니다. layout_gravity center는 FILL_PARENT 인 뷰에 영향을 미칩니다 (자동 패드라고 생각).
기본적으로 android : layout_gravity는 프로그래밍 방식으로 액세스 할 수 없으며 android : gravity 만 가능합니다. OP의 경우와 내 경우에는 허용 된 답변으로 버튼이 세로 중앙에 배치되지 않습니다.
Karthi의 답변을 향상 시키려면 :
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.CENTER;
button.setLayoutParams(params);
에 링크 하십시오 LinearLayout.LayoutParams
.
android : layout_gravity는 “관련 메소드가 없음”을 나타내며 프로그래밍 방식으로 액세스 할 수 없습니다. 반면 중력은 수업의 한 분야입니다.
답변
MyButton.setGravity(Gravity.RIGHT);
layout_gravity의 경우 “karthi”로 표시된 답변을 사용하십시오. 이 방법은 뷰 안에 어린이를 배치하도록 중력을 설정합니다.
답변
GridLayout의 버튼에 프로그래밍 방식으로 layout_gravity를 설정하는 것과 비슷한 문제가있었습니다.
트릭은 버튼의 LayoutParams에 세트 중력했다 후에 , 버튼이 부모 (GridLayout과)에 추가 된 그렇지 않으면 중력이 무시 될 것이다 .
grid.addView(button)
((GridLayout.LayoutParams)button.getLayoutParams()).setGravity(int)
답변
layou_gravity
기존보기 를 변경하려면 다음 을 수행하십시오.
((FrameLayout.LayoutParams) view.getLayoutParams()).gravity = Gravity.BOTTOM;
LayoutParams
보기가있는 레이아웃 유형에 따라 올바른 것을 사용해야합니다 . 예 :
LinearLayout.LayoutParams
답변
layoutParams2.gravity = Gravity.RIGHT|Gravity.BOTTOM;
이것을 사용하여 하나의 중력보다 mor을 더하십시오
답변
이 질문은 오래되었지만 방금 같은 문제가 있었고 다음과 같이 해결했습니다.
LayoutParams lay = new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT)
lay.gravity = Gravity.CENTER;