【问题标题】:Programmatically center TextView text以编程方式居中 TextView 文本
【发布时间】:2012-10-08 05:23:41
【问题描述】:

我在此请求一些宽大处理,我只是从 Android SDK 教程开始,我正在尝试一些不属于本教程本身的兴趣,但我希望会很容易。

我正在尝试通过代码水平和垂直居中 TextView 项目(我可以在 XML 中很好地做到这一点)。当父对象是表格或其他对象时,我已经看到了几个如何执行此操作的示例,但我希望这对我来说更容易掌握。 (附注:请随时更正我的术语)。

这是教程/我的工作模型中的示例代码:

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 作为根布局?
  • OK 让我们再试一次,因为我在这里找不到删除或编辑按钮。我认为主容器是一个相对布局,因为它使用(我认为)我的 activity_display_message.xml 本教程的来源有点复制/粘贴,但它位于:bit.ly/VDh9yS schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".DisplayMessageActivity" >
  • 查看我编辑的答案,它可能会对您有所帮助..:)

标签: android textview


【解决方案1】:
yourTextView.setGravity(Gravity.CENTER);

【讨论】:

  • 完美、简短、甜美!像魅力一样工作!我还看到有 CENTER_HORIZONTAL 和 CENTER_VERTICAL 属性。谢谢史蒂夫!
  • 请注意,这仅在android:textAlignment="gravity" 属性设置为重力时有效。否则 textAlignment 会覆盖。
  • 以编程方式设置 textAlignment; yourTextView.setTextAlignment(View.TEXT_ALIGNMENT_GRAVITY);
【解决方案2】:

动态居中

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

【讨论】:

  • textView.setGravity(Gravity.CENTER); 的分解版本,也是一个有效且精彩的答案。谢谢尼拉夫!
  • 希望我能,我是新手,没有足够的代表投票支持。我会很好地给哈里检查原因,你的答案都是正确的,可怜的家伙可以更多地使用代表;)这并没有减去你的答案同样有用的事实。 (如果我的代表上升时我有机会,我一定要给你们两个投票!)
【解决方案3】:

这肯定行得通..

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);
textView.setLayoutParams(params);
textView.setGravity(Gravity.CENTER);

layout.addView(textView);

setcontentView(layout);

【讨论】:

  • LinearLayout 从 android.widget.LinearLayout 继承时似乎没有 CENTER_IN_PARENT 属性;我错过了什么吗?
【解决方案4】:
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】:

    尝试添加以下代码以将布局参数应用于 TextView

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

    【讨论】:

    • LinearLayout 似乎没有 CENTER_IN_PARENT 属性。
    【解决方案6】:

    如果您的文本尺寸很小,您应该将文本视图的宽度设置为“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);
    

    【讨论】:

      【解决方案7】:

      您可以使用以下方法在 Kotlin 中以编程方式将 TextView 文本居中:

      textview.gravity = Gravity.CENTER
      

      【讨论】:

        【解决方案8】:

        试试这个方法

          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);
        }
        

        【讨论】:

          【解决方案9】:

          这两个需要一起去工作。 一直在挠头。

          numberView.textAlignment = View.TEXT_ALIGNMENT_CENTER
           numberView.layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                      ViewGroup.LayoutParams.WRAP_CONTENT)
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-01-09
            • 2019-03-05
            • 2013-04-19
            • 2016-04-09
            • 2018-08-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多