【问题标题】:Android: Multiple styles inside a TextView staticallyAndroid:TextView中静态的多种样式
【发布时间】:2011-03-30 05:18:13
【问题描述】:

我想在 textView 中放置大文本。文本有多个具有多种颜色的部分。我见过 Html.fromHtml() 函数,也知道如何使用 setSpan()。但这些都不适合我。就我而言,我不知道运行时文本视图的 id。当我在运行时膨胀不同的视图时,每个视图都有许多文本视图。如果我能找到一种在字符串中设置样式的方法会更好。

请一些人帮助我,我在这里花了这么多时间。

【问题讨论】:

  • 您能否更清楚地解释一下您到底要做什么?
  • @Fosco 我在表格视图中有一些选项列表点击任何我想显示一些文本内容的列表项。内容是原始文本。不同的内容没有相似之处所以我不能创建一个通用的布局。我为列表创建了一个活动,并为显示内容创建了一个子活动。在同一个子活动中,我想显示任何内容。为此,我会根据用户选择来扩展不同的布局。

标签: android android-layout textview


【解决方案1】:

您可以设置文本视图的 id 天气视图是由充气机找到的

当您使用 inflater 获取文本视图时,您可以设置该特定文本视图的 id 并且可以设置 textSize() 等属性

【讨论】:

  • 我正在扩展 textView 所在的父布局(不是 textView)。 (所有的 textView 都从字符串中获取数据)。
  • 您可以为子视图充气,例如如果 View v = inflater.inflat(R.layout.test,null) 那么您可以在这个 wany TextView tv = (Textview)v 中从中获取 textview。 findviewbyId(R.id.tvName);所以你可以设置 textview 的 id 像 tv.setId(Id);
【解决方案2】:

This method 直接使用您需要的属性创建 spannables 将起作用。

基本上你可以像这样设置颜色,给定一个名为TextViewtext

String greeting = "Hello World!"
SpannableString str = SpannableString.valueOf(greeting);
str.setSpan(new ForegroundColorSpan(0xffffffff), 0, greeting.length(),
    Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
str.setSpan(new BackgroundColorSpan(0xff0099ff), 0, greeting.length(),
    Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
text.append(str);

【讨论】:

  • 这看起来不错,但这里的问题是,在我的情况下,我正在膨胀 textViews 所在的父布局(而不是 textView)。 (所有的 textViews 都从字符串中获取数据)。有什么方法可以在字符串文件中给出 html 标签,而我不必为 textviews 调用 fromHtml()。
  • 是的,您可以在字符串文件中使用 html。如果您使用 eclipse 编辑器,您的 html 将自动为您转义。
  • @Matthew Willis iPrepare iPlan\n 工具包中最强大的工具 我正在做这样的粗体工作,但文本颜色不起作用
  • 你能复制这种行为吗:stackoverflow.com/questions/2730706/…
  • @Matthew Willis:我无法调用 setText,因为在运行时我无法决定要膨胀哪个 textView。我想要一种方法,这样我在字符串中所做的格式化不需要调用 from.Html 所有的格式化都应该在编译时完成,即不在 java 中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-15
  • 2020-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多