programing

Android: Android에서 Java 측에서 TextView로 중력을 설정하는 방법

magicmemo 2023. 9. 3. 12:31
반응형

Android: Android에서 Java 측에서 TextView로 중력을 설정하는 방법

사용할 수 있습니다android:gravity="bottom|center_horizontal"원하는 결과를 얻으려면 텍스트 보기에서 xml로 입력해야 하지만 프로그래밍 방식으로 이 작업을 수행해야 합니다.내 텍스트 보기는 a 안에 있습니다.tablerow만약 그것이 중요하다면relativelayout.

시도해 본 결과:

LayoutParams layoutParams = new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL);
labelTV.setLayoutParams(layoutParams);

하지만 내가 올바르게 이해했다면, 그것은 그것을 적용할 것입니다.tablerow텍스트 보기가 아니라구요?

labelTV.setGravity(Gravity.CENTER | Gravity.BOTTOM);

코틀린 버전(토미 덕분)

labelTV.gravity = Gravity.CENTER_HORIZONTAL or Gravity.BOTTOM

또한 중력을 말씀하시는 건가요, 아니면 배치 중력을 말씀하시는 건가요?후자는 상대 레이아웃에서 작동하지 않습니다.

이렇게 하면 텍스트가 텍스트 보기의 중앙에 배치됩니다.

TextView ta = (TextView) findViewById(R.layout.text_view);
LayoutParams lp = new LayoutParams();
lp.gravity = Gravity.CENTER_HORIZONTAL;
ta.setLayoutParams(lp);

우리는 아래와 같은 모든 뷰에 배치 중력을 설정할 수 있습니다.

myView = findViewById(R.id.myView);
myView.setGravity(Gravity.CENTER_VERTICAL|Gravity.RIGHT);
 or
myView.setGravity(Gravity.BOTTOM);

이는 아래 xml 코드와 동일합니다.

<...
 android:gravity="center_vertical|right"
 ...
 .../>

사용해야 합니다.textView.setGravity(Gravity.CENTER_HORIZONTAL);.

다음을 사용합니다.

LinearLayout.LayoutParams layoutParams =new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
layoutParams2.gravity = Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL;

작동하지 않습니다.이렇게 하면 위젯의 중력이 설정되고 위젯의 텍스트가 설정되지 않습니다.

이 코드 사용

        TextView textView = new TextView(YourActivity.this);
        textView.setGravity(Gravity.CENTER | Gravity.TOP);
        textView.setText("some text");
textView.setGravity(Gravity.CENTER | Gravity.BOTTOM);

이렇게 하면 텍스트 보기의 중력이 설정됩니다.

몇 가지 작업을 수행하여 이 문제를 해결했습니다. 먼저,height나의TextView그리고 텍스트에 따라 그것을 다이빙합니다.size가능한 총 라인 양을 얻기 위해.TextView.

int maxLines = (int) TextView.getHeight() / (int) TextView.getTextSize();

이 값을 얻은 후에는 다음 값을 설정해야 합니다.TextView maxLines이 새로운 가치로.

TextView.setMaxLines(maxLines);

설정Gravity로.Bottom최대 줄 수를 초과하면 자동으로 아래로 스크롤됩니다.

if (TextView.getLineCount() >= maxLines) {
    TextView.setGravity(Gravity.BOTTOM);
}

이 작업이 올바르게 작동하려면 다음을 사용해야 합니다.append()에게TextView,네가 만약setText()이것은 작동하지 않을 것입니다.

TextView.append("Your Text");

이 방법의 이점은 다음과 같은 방법에 관계없이 동적으로 사용할 수 있다는 것입니다.height당신의TextView그리고 본문size레이아웃을 수정하기로 결정하더라도 이 코드는 계속 작동합니다.

언급URL : https://stackoverflow.com/questions/3775705/how-set-the-androidgravity-to-textview-from-java-side-in-android

반응형