プログラムでTextViewテキストを中央揃え


87

ここで少し寛大にお願いします。AndroidSDKチュートリアルから始めたばかりで、チュートリアル自体にはない興味のあることを試みていますが、簡単だと思います。

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は2つの別個のものです。この場合の両方を行う方法の例と、APIドキュメントで答えを見つける方法/場所を教えてください。


なぜtextviewをルートレイアウトとして採用するのですか?
Kalpesh Lakhani 2012

OKここに削除または編集ボタンが見つからないので、もう一度試してみましょう。メインコンテナは私のactivity_display_message.xmlを使用しているので相対的なレイアウトだと思います(私は思う)このチュートリアルのソースは少しコピー/貼り付けっぽいですが、次の場所にあります:bit.ly/VDh9yS <RelativeLayout xmlns:android = " schemas.android.com/apk/res/android "のxmlns:ツール= " schemas.android.com/tools "のandroid:layout_width =" match_parent"のandroid:layout_height = "match_parent"ツール:コンテキスト= "DisplayMessageActivity。"> < / RelativeLayout>
Alex Summers

私の編集した答えを見てくださいそれはあなたを助けるかもしれません.. :)
Kalpesh Lakhani 2012

回答:


249
yourTextView.setGravity(Gravity.CENTER);

完璧で短くて甘い!チャームのように働いた!また、CENTER_HORIZONTALプロパティとCENTER_VERTICALプロパティがあることもわかります。スティーブありがとう!
Alex Summers

2
これは、android:textAlignment="gravity"属性が重力に設定されている場合にのみ機能することに注意してください。それ以外の場合、textAlignmentはオーバーライドします。
velis

1
プログラムでtextAlignmentを設定するため。yourTextView.setTextAlignment(View.TEXT_ALIGNMENT_GRAVITY);
Yusril MaulidanRaji19年

25

動的に中央に配置する場合

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

textView.setGravity(Gravity.CENTER);の分解バージョン、これも機能的で素晴らしい答えです。Niravありがとう!
Alex Summers

できればいいのですが、私は新しく、投票するのに十分な担当者ではありません。私はハリにチェックの原因をうまく与えるつもりです、あなたの答えは両方とも的確であり、貧しい仲間はより多くの担当者を使うことができます;)それはあなたの答えが等しく役に立ったという事実から差し引かれません。(担当者が上がる機会があれば、必ず両方に投票してください!)
Alex Summers

6

これは確かに機能します。

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
android.widget.LinearLayoutから継承された場合、LinearLayoutにはCENTER_IN_PARENTプロパティがないようです。私は何かが足りないのですか?
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);

そしてもっとまた利用可能


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

2

テキストサイズが小さい場合は、テキストビューの幅を「fill_parent」にする必要があります。その後、TextViewGravityを中央に設定できます。

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

1

以下を使用して、プログラムでTextViewテキストをKotlinの中央に配置できます。

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

それが機能するためには、これら2つが一緒に行く必要があります。しばらく頭をかいていた。

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.