프로그래밍 방식으로 layout_gravity를 설정하는 방법은 무엇입니까? MyButton = new Button(this);

내 질문은 간단합니다

프로그래밍 방식으로 단추 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;