프로그래밍 방식으로 TextView 텍스트 중앙에 배치


86

여기에 약간의 관대함을 간청합니다. 저는 Android SDK 튜토리얼부터 시작하고 있으며 튜토리얼 자체에없는 흥미로운 것을 시도하고 있지만 쉬울 수 있기를 바랍니다.

TextView코드를 통해 수평 및 수직 으로 항목 을 중앙에 배치하려고합니다 (XML로 잘 할 수 있습니다). 부모가 테이블이나 다른 개체 일 때이를 수행하는 방법에 대한 몇 가지 예를 보았지만 이것이 이해하기 더 쉬웠 으면합니다. (ps 내 용어를 자유롭게 수정하십시오).

다음은 튜토리얼 / 내 작업 모델의 예제 코드입니다.

package com.example.myfirstapp;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.ViewGroup.LayoutParams;
import android.widget.TextView;


public class DisplayMessageActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent intent = getIntent();
        String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

        TextView textView = new TextView(this);
        textView.setTextSize(40);
        textView.setText(message);
        textView.setGravity(View.TEXT_ALIGNMENT_GRAVITY);

        setContentView(textView);
    }
}

나는 setGravity방법 을 찾을 수 있었고 그것을 위해 손을 대려고 시도했지만 해결하기 위해 상수를 setLayoutParams얻기 위해 가져와야 할 것을 찾을 수 없기 때문에 범위가 무엇인지 확실하지 않습니다. WRAP_CONTENT. 내가 이해 한 바에 따르면 센터링과 content_wrapping + gravity는 별개의 것입니다. 이 경우에 수행하는 방법에 대한 예제와 API 문서에서 답변을 어떻게 / 어디에서 찾았 을까요?


왜 textview를 루트 레이아웃으로 사용합니까?
Kalpesh Lakhani

확인 여기에서 삭제 또는 수정 버튼을 찾을 수 없으므로 다시 시도해 보겠습니다. 기본 컨테이너는 내 activity_display_message.xml을 사용하고 있기 때문에 상대적인 레이아웃이라고 생각합니다.이 자습서의 소스는 약간의 복사 / 붙여 넣기 방식이지만 다음 위치에 있습니다. bit.ly/VDh9yS <RelativeLayout xmlns : android = " schemas.android.com/apk/res/android"xmlns : tools = " schemas.android.com/tools"android : layout_width = "match_parent"android : layout_height = "match_parent"tools : context = ". DisplayMessageActivity"> < / RelativeLayout>
Alex Summers

그것은 수도가 당신을 도와 내 편집 대답을 참조 .. :)
Kalpesh 카니에게

답변:


246
yourTextView.setGravity(Gravity.CENTER);

완벽하고 짧고 달콤합니다! 매력처럼 일했다! 또한 CENTER_HORIZONTAL 및 CENTER_VERTICAL 속성이 있음을 알 수 있습니다. 고마워요 스티브!
Alex Summers 2012 년

2
android:textAlignment="gravity"속성이 중력으로 설정된 경우에만 작동합니다 . 그렇지 않으면 textAlignment가 재정의됩니다.
velis

1
프로그래밍 방식으로 textAlignment를 설정합니다. yourTextView.setTextAlignment(View.TEXT_ALIGNMENT_GRAVITY);
Yusril Maulidan Raji

25

다이나믹 센터 용

textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);

textView.setGravity (Gravity.CENTER);의 세분화 버전도 작동하고 멋진 답변입니다. Nirav 감사합니다!
Alex Summers 2012 년

내가 할 수 있기를 바랍니다. 나는 새롭고 투표하기에 충분한 담당자가 아닙니다. 나는 Hari에게 확인 원인을 잘 줄 것입니다. 당신의 대답은 정확하고 가난한 사람은 더 많이 사용할 수 있습니다.) 그것은 당신의 대답이 똑같이 도움이되었다는 사실에서 빼지 않습니다. (내 담당자가 올라갈 기회가 생기면 두 사람 모두 투표해야합니다!)
Alex Summers

5
TextView text = new TextView(this);

text.setGravity(Gravity.CENTER);

text.setGravity(Gravity.TOP);

text.setGravity(Gravity.BOTTOM);

text.setGravity(Gravity.LEFT);

text.setGravity(Gravity.RIGHT);

text.setGravity(Gravity.CENTER_VERTICAL);

text.setGravity(Gravity.CENTER_HORIZONTAL);

그리고 더 사용 가능


5

이것은 확실히 작동합니다 ..

RelativeLayout layout = new RelativeLayout(R.layout.your_layour); 
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.CENTER_IN_PARENT);
params.addRule(LinearLayout.CENTER_IN_PARENT);
textView.setLayoutParams(params);
textView.setGravity(Gravity.CENTER);

layout.addView(textView);

setcontentView(layout);

2
LinearLayout은 android.widget.LinearLayout에서 상속 될 때 CENTER_IN_PARENT 속성이없는 것 같습니다. 내가 뭔가를 놓치고 있습니까?
Alex Summers 2012 년

2

TextView에 레이아웃 매개 변수를 적용하기 위해 다음 코드를 추가해보십시오.

LayoutParams lp = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.WRAP_CONTENT,
                LinearLayout.LayoutParams.WRAP_CONTENT);
lp.addRule(LinearLayout.CENTER_IN_PARENT);
textView.setLayoutParams(lp);

4
LinearLayout에 CENTER_IN_PARENT 속성이없는 것 같습니다.
Alex Summers 2012 년

2

텍스트 크기가 작 으면 텍스트보기의 너비를 "fill_parent"로 만들어야합니다. 그런 다음 TextView Gravity를 center로 설정할 수 있습니다.

TextView textView = new TextView(this);
textView.setText(message);
textView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
textView.setGravity(Gravity.CENTER);

1

다음을 사용하여 TextViewKotlin에서 프로그래밍 방식으로 텍스트를 중앙에 배치 할 수 있습니다 .

textview.gravity = Gravity.CENTER

1

이 방법을 시도

  public void centerTextView(LinearLayout linearLayout) {
    TextView textView = new TextView(context);
    textView.setText(context.getString(R.string.no_records));
    textView.setTypeface(Typeface.DEFAULT_BOLD);
    textView.setGravity(Gravity.CENTER);
    textView.setTextSize(18.0f);
    textView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
    linearLayout.addView(textView);
}

0

이 두 가지가 작동하려면 함께 가야합니다. 잠시 동안 머리를 긁적입니다.

numberView.textAlignment = View.TEXT_ALIGNMENT_CENTER
 numberView.layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.WRAP_CONTENT)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.