【问题标题】:Change Layout Of Text Created In Java [Android]更改用 Java 创建的文本的布局 [Android]
【发布时间】:2011-01-27 05:19:02
【问题描述】:

好吧,我问了如何为 android 创建一个 1-100 的随机数,我来到了这个

    TextView tv = new TextView(this);

    int random = (int)Math.ceil(Math.random()*101); 

    tv.setText("Your Number Is..."+ random );

这样做是创建默认的有点“hello world”样式的文本视图并显示“你的号码是.... [然后是随机数]

我的问题是我不能改变这个文本的布局,因为它没有在 XML 中定义,如果有人能告诉我如何改变样式,或者像把随机数变成一个字符串,这样我就可以用它任何会很棒的 Textview 布局..

谢谢:)

【问题讨论】:

    标签: android text random numbers


    【解决方案1】:
    • 如果change the style 指的是文本颜色、文本大小,并且您想以编程方式更改它们,请查看setTextColorsetTextSize 方法。

    更多信息here

    • 如果您想以编程方式设置更高级的格式,请参阅link

    以下示例演示了如何使您的文本变为粗体和斜体。

    tv.setText("Your Number Is..."+ random, TextView.BufferType.SPANNABLE );
    Spannable myText = (Spannable) tv.getText();
    myText.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC),0,myText.length(),0);
    

    编辑: 试试下面的 android:textSize="100dp"android:gravity="center"

    tv.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 100);
    tv.setGravity(Gravity.CENTER);
    

    【讨论】:

    • 你能告诉我如何格式化我的文本,使它大约 100dp 并且重力在中心吗?
    • 非常感谢!! ,但是有没有将背景设置为 R.drawable 的命令之一,黑色背景有点无聊,如果你能为我回答这个问题,我将非常感激并将这个答案标记为正确的 :)
    • 如果你想要一个绿色背景:tv.setBackgroundColor(Color.GREEN);因此,您只需将 Color.GREEN 替换为您想要的颜色。您也可以将您的颜色放在 res/colors.xml 下并引用它
    • 设置背景为drawable,见下例:tv.setBackgroundDrawable(getResources().getDrawable(R.drawable.icon));(这里的“icon”指的是icon.png下在 Eclipse 中创建默认项目时使用 res/drawable。
    【解决方案2】:

    将其放入字符串很容易。

    String randomAsAString = Integer.toString(random)
    

    然后您可以使用 TextView 的 XML 属性来更改其格式,例如 android:textSize="30dp" 或 android:textColor="#900"。

    顺便说一句,如果您对上一个问题的答案感到满意,您应该返回并将答案标记为“已接受”。这会为您接受其答案的人提供“声誉”点数并结束问题,这样人们就不会认为您仍在等待更好的答案。您可以在常见问题解答中阅读有关声誉的更多信息。


    编辑: 您不能在 xml 中完全引用字符串,同时仍然给它一个随机数。这是因为“@string/some_string”格式只允许不可更改的字符串。对此的执行是使用参数,例如将字符串设置为

    <string name="random_number">The random number is %d</string>
    

    然后你可以使用类似的东西调用那个字符串

    yourTextView.setText(this.getString(R.string.random_number, random))
    

    关于为 textView 设置背景的其他问题,这也很简单。

    yourTextView.setBackgroundDrawable(R.drawable.....)
    

    您应该利用 Eclipse 的自动完成功能...它使查找这些命令变得更加容易。例如,只需键入您的 TextView 的名称,后跟一个句点,暂停半秒以显示选项列表,然后是“setB”,然后它应该将列表过滤为三个 setBackground Drawable/Resource/Color 选项。

    【讨论】:

    • 我怎么知道它去了哪个字符串?
    • 我在“randomAsAString”下面得到一个黄色下划线,它表示它从未使用过
    • randomAsAString 是它进入的字符串;这只是我选择的愚蠢的名字。告诉你它没有被使用的黄线就是这个意思。如果您不在某处使用该字符串,Eclipse 会警告您。您实际上需要告诉 Android 将该字符串设置为 TextView。我现在无法使用 Eclipse,但它应该像 yourTextView.setText(randomAsAString) 替换为正确的名称一样简单。
    • 有什么方法可以在 xml 中找到该字符串,例如,我创建一个文本视图并执行 .. android:text="@string/randomAsAString" ?
    【解决方案3】:
    tv.setText(Html.fromHtml("Your number is: <b>" + random + "</b>"));
    

    用于基本的 HTML 文本样式标记。

    【讨论】:

      【解决方案4】:

      你也可以这样做。

      在 strings.xml 中定义你的字符串,例如:

      <string name="your_number_is">Your number is <xliff:g id="number">%s</xliff:g>.</string>
      

      在布局xml中创建一个TextView:

      <TextView android:id="@+id/your_number_is"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:text="@string/your_number_is"
          android:gravity="center"
          android:textSize="100dip"
          />
      

      那么您的代码将如下所示:

      TextView tv = (TextView) findViewById(R.id.your_number_is);
      int random = (int)Math.ceil(Math.random()*101);
      tv.setText(getString(R.string.your_number_is, random));
      

      当您以后想要更改文本或本地化您的应用时,这将变得更加容易。

      【讨论】:

      • 我在“(R.id.your_number_is)”和“(R.string.your_number_is”下看到一条红线
      • 确保您已使用正确的 ID“your_number_is”指定了 TextView,并且在 strings.xml 中的条目具有正确的名称“your_number_is”。如果这没有帮助,并且您正在使用 Eclipse,请尝试在项目的“Android 工具”菜单下运行“修复项目属性”。
      【解决方案5】:

      如果您遇到麻烦,请使用:

      new Thread(){ 
            public void run(){ 
                  TextView v = (TextView)findViewById(R.id.mytext); 
                  v.setText("TEST"); 
            } 
          }.start();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-18
        • 2015-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多