`
abc20899
  • 浏览: 929250 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

TextView设置背景色和文本颜色

阅读更多
textView01 = (TextView)findViewById(R.id.textView01);
textView02 = (TextView)findViewById(R.id.textView02);
//设置背景色
textView01.setText("设置了背景色黑色");
//从资源文件中加载颜色
textView01.setBackgroundDrawable(
getResources().getDrawable(R.drawable.green));
//设置文本颜色(如透明色:Color.TRANSPARENT)
textView02.setTextColor(Color.MAGENTA);
textView02.setText("设置文本颜色");


在winform或webform中,均有Control类,虽然不在同一个程序集中,但都代表“控件”的意思。在Monodroid中,表示控件的类是Android.Views.View。开发过winform或webform的朋友都知道,要在界面上显示文字,只要使用Label控件即可。在Android中,则要使用TextView。

要设置一个TextView的文本有两种方法,一是使用资源文件来定义一个字符串常数,然后在布局文件中进行引用。二是直接在后台程序中使用C#代码进行赋值。

我们先来试试第一种方法。在Resources\Values\Strings.xml文件中增加一个项,如下所示:

view plaincopy to clipboardprint?
<?xml version="1.0" encoding="utf-8"?> 
<resources> 
  <string name="Hello">Hello World, Click Me!</string> 
  <string name="ApplicationName">MonoDroidTest</string> 
  <string name="myText">这是通过Strings.xml设置的文本</string> 
</resources> 
<?xml version="1.0" encoding="utf-8"?>
<resources>
  <string name="Hello">Hello World, Click Me!</string>
  <string name="ApplicationName">MonoDroidTest</string>
  <string name="myText">这是通过Strings.xml设置的文本</string>
</resources>


然后在布局文件Main.axml中,增加一个TextView,文本引用这个新增加的字符串常量,如下所示:

view plaincopy to clipboardprint?
<?xml version="1.0" encoding="utf-8"?> 
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android" 
                android:layout_width="fill_parent" 
                android:layout_height="fill_parent"> 
  <TextView android:text="@string/myText" 
            android:layout_x="30px" 
            android:layout_y="0px" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:id="@+id/myTextView"/> 
</AbsoluteLayout> 
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent">
  <TextView android:text="@string/myText"
            android:layout_x="30px"
            android:layout_y="0px"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/myTextView"/>
</AbsoluteLayout>

Activity1.cs中只要把Main.axml设置到ContentView即可:

view plaincopy to clipboardprint?
using System;  
using Android.App;  
using Android.Content;  
using Android.Runtime;  
using Android.Views;  
using Android.Widget;  
using Android.OS;  
using MonoDroidTest.Tabs;  
using Android.Util;  
using Java.IO;  
namespace MonoDroidTest  
{  
    [Activity(Label = "MonoDroidTest", MainLauncher = true)]  
    public class Activity1 : Activity  
    {  
        protected override void OnCreate(Bundle bundle)  
        {  
            base.OnCreate(bundle);  
            SetContentView(Resource.Layout.Main);  
        }  
    }  

using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using MonoDroidTest.Tabs;
using Android.Util;
using Java.IO;
namespace MonoDroidTest
{
    [Activity(Label = "MonoDroidTest", MainLauncher = true)]
    public class Activity1 : Activity
    {
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            SetContentView(Resource.Layout.Main);
        }
    }
}


运行之后,就可以看到程序中出现了一行字符串,与我们在Strings.xml中设置的一样:



使用代码来设置TextView的文本就更简单了,首先在Activity的OnCreate方法里使用FindViewById方法来通过TextView的id从布局文件中找到这个TextView,然后对其Text进行赋值即可:

view plaincopy to clipboardprint?
using Android.Content;  
using Android.Runtime;  
using Android.Views;  
using Android.Widget;  
using Android.OS;  
using MonoDroidTest.Tabs;  
using Android.Util;  
using Java.IO;  
namespace MonoDroidTest  
{  
    [Activity(Label = "MonoDroidTest", MainLauncher = true)]  
    public class Activity1 : Activity  
    {  
        protected override void OnCreate(Bundle bundle)  
        {  
            base.OnCreate(bundle);  
            SetContentView(Resource.Layout.Main);  
            TextView tv = FindViewById<TextView>(Resource.Id.myTextView);  
            tv.Text = "这是通过程序设置的文本";  
        }  
    }  

using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using MonoDroidTest.Tabs;
using Android.Util;
using Java.IO;
namespace MonoDroidTest
{
    [Activity(Label = "MonoDroidTest", MainLauncher = true)]
    public class Activity1 : Activity
    {
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            SetContentView(Resource.Layout.Main);
            TextView tv = FindViewById<TextView>(Resource.Id.myTextView);
            tv.Text = "这是通过程序设置的文本";
        }
    }
}


这里提示一下,TextView不支持HTML标签的输出,所以即便写成这样:tv.Text = "<a href=\"http://blog.csdn.net/ojlovecd\" >区健的博客 </a>"; 实际输出时也不会变成超链接,但若在TextView里加上了android:autoLink="all",或者在程序中使用tv.AutoLinkMask=1,那么文本中若有网址(http://),是可以被转换成超链接的:



下面我们试试更改TextView的字体颜色和背景色。在第三篇文章里我们在最后就已经试过把程序的背景色给改成了白色,是通过在Values文件下增加了一个color.xml来设置颜色常量来达到的。但实际设计中最常用的方法是使用程序控制TextView或其它对象的背景颜色。接下来我们在Layout中预先设计好两个TextView对象,并在Activity的OnCreate方法中通过两种方式更改TextView的文字颜色及背景色。

view plaincopy to clipboardprint?
using System;  
using Android.App;  
using Android.Content;  
using Android.Runtime;  
using Android.Views;  
using Android.Widget;  
using Android.OS;  
using MonoDroidTest.Tabs;  
using Android.Util;  
using Java.IO;  
namespace MonoDroidTest  
{  
    [Activity(Label = "MonoDroidTest", MainLauncher = true)]  
    public class Activity1 : Activity  
    {  
        protected override void OnCreate(Bundle bundle)  
        {  
            base.OnCreate(bundle);  
            SetContentView(Resource.Layout.Main);  
            SetContentView(Resource.Layout.Main);  
            TextView tv1 = FindViewById<TextView>(Resource.Id.myTextView);  
            tv1.Text = "这是用Drawable设置背景色的文本";  
            tv1.SetBackgroundDrawable(this.Resources.GetDrawable(Resource.Color.white));  
 
            TextView tv2 = FindViewById<TextView>(Resource.Id.myTextView2);  
            tv2.Text = "这是用SetTextColor设置文本颜色的文本";  
            tv2.SetTextColor(Android.Graphics.Color.Green);  
        }  
    }  

using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using MonoDroidTest.Tabs;
using Android.Util;
using Java.IO;
namespace MonoDroidTest
{
    [Activity(Label = "MonoDroidTest", MainLauncher = true)]
    public class Activity1 : Activity
    {
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            SetContentView(Resource.Layout.Main);
            SetContentView(Resource.Layout.Main);
            TextView tv1 = FindViewById<TextView>(Resource.Id.myTextView);
            tv1.Text = "这是用Drawable设置背景色的文本";
            tv1.SetBackgroundDrawable(this.Resources.GetDrawable(Resource.Color.white));

            TextView tv2 = FindViewById<TextView>(Resource.Id.myTextView2);
            tv2.Text = "这是用SetTextColor设置文本颜色的文本";
            tv2.SetTextColor(Android.Graphics.Color.Green);
        }
    }
}




那么定义在Strings.xml中的字符串常量我们要是在程序里要使用的话该怎么获取呢?可以使用Activity中的GetString方法:

tv1.Text = this.GetString(Resource.String.myText)。注意一点的是,如果string.xml中的字符串常数有单引号',双引号"和斜杠\等特殊字符时,记得使用转义字符(\):<string name="myText">这是?通过\'Strings.xml\"设置的文\\本</string>

Android可以设置为随着窗口大小调整缩放比例,但即便如此,开发人员还是必须知道手机屏幕的边界,以免造成布局变形问题。获取手机分辨率的方法很简单,关键是DisplayMetrics类的应用。

view plaincopy to clipboardprint?
TextView tv2 = FindViewById<TextView>(Resource.Id.myTextView2);  
DisplayMetrics dm = new DisplayMetrics();  
this.WindowManager.DefaultDisplay.GetMetrics(dm);  
tv2.Text = string.Format("手机分辨率为:{0}×{1}", dm.WidthPixels, dm.HeightPixels); 
            TextView tv2 = FindViewById<TextView>(Resource.Id.myTextView2);
            DisplayMetrics dm = new DisplayMetrics();
            this.WindowManager.DefaultDisplay.GetMetrics(dm);
            tv2.Text = string.Format("手机分辨率为:{0}×{1}", dm.WidthPixels, dm.HeightPixels);


老是要一个个指定文字的大小、颜色是不是太麻烦了点?有没有类似CSS那样的方法来指定这些样式呢?事实上是有的,在MonoDroid中,也可以通过样式(Style)的方式,来更改Layout中任何对象的外观。

我们首先在Values文件下增加一个style.xml作为我们的样式文件,然后往里面增加两种样式作为例子:

view plaincopy to clipboardprint?
<?xml version="1.0" encoding="utf-8"?> 
<resources> 
  <mce:style name="TextStyle1"><!--  
    <item name="android:textSize">18sp</item> 
    <item name="android:textColor">#ec9237</item> 
    
--></mce:style><style name="TextStyle1" mce_bogus="1">    <item name="android:textSize">18sp</item> 
    <item name="android:textColor">#ec9237</item> 
  </style> 
  <mce:style name="TextStyle2"><!--  
    <item name="android:textSize">14sp</item> 
    <item name="android:textColor">#ff7f7c</item> 
    <item name="android:fromAlpha">0.0</item> 
    <item name="android:toAlpha">0.0</item> 
    
--></mce:style><style name="TextStyle2" mce_bogus="1">    <item name="android:textSize">14sp</item> 
    <item name="android:textColor">#ff7f7c</item> 
    <item name="android:fromAlpha">0.0</item> 
    <item name="android:toAlpha">0.0</item> 
  </style> 
</resources> 
<?xml version="1.0" encoding="utf-8"?>
<resources>
  <mce:style name="TextStyle1"><!--
    <item name="android:textSize">18sp</item>
    <item name="android:textColor">#ec9237</item>
 
--></mce:style><style name="TextStyle1" mce_bogus="1">    <item name="android:textSize">18sp</item>
    <item name="android:textColor">#ec9237</item>
  </style>
  <mce:style name="TextStyle2"><!--
    <item name="android:textSize">14sp</item>
    <item name="android:textColor">#ff7f7c</item>
    <item name="android:fromAlpha">0.0</item>
    <item name="android:toAlpha">0.0</item>
 
--></mce:style><style name="TextStyle2" mce_bogus="1">    <item name="android:textSize">14sp</item>
    <item name="android:textColor">#ff7f7c</item>
    <item name="android:fromAlpha">0.0</item>
    <item name="android:toAlpha">0.0</item>
  </style>
</resources>

然后在布局文件中指定Style属性,使其应用style.xml里事先定义好的样式。如果vs在style下面有波浪提示你未声明“style”特性,不要管它,直接生成。

view plaincopy to clipboardprint?
<TextView android:text="@string/myText" 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:id="@+id/myTextView" 
          style="@style/TextStyle1" mce_style="@style/TextStyle1" /> 
<TextView android:id="@+id/myTextView2" 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:layout_y="30px" 
          style="@style/TextStyle2" mce_style="@style/TextStyle2"/>

分享到:
评论

相关推荐

    用paint画笔给TextView设置背景颜色和宽高

    TextView作为显示文本的基础组件,有时需要我们为其设置独特的背景颜色和尺寸。这篇内容将深入讲解如何利用Paint类来实现这一功能。 首先,我们需要了解Paint类在Android中的作用。Paint是Android图形绘制的核心...

    设置TextView部分文字的颜色和背景(高亮显示)

    本篇将详细介绍如何设置TextView的部分文字颜色和背景,使其更加醒目。 首先,我们可以使用`SpannableString`和`SpannableStringBuilder`来实现这个功能。这两个类是可变的字符串,可以添加不同的样式,如颜色、...

    动态设置textview圆角背景

    总结起来,实现动态设置`TextView`圆角背景的关键在于使用`GradientDrawable`对象,它可以灵活地调整背景的颜色和形状。通过结合XML drawable资源和Java代码,我们可以满足各种自定义背景的需求,以适应不同的用户...

    Android 设置textview某段字体颜色或者背景

    在许多情况下,我们可能需要对TextView中的文本进行更细致的控制,比如设置某一段文字的颜色或背景色。这涉及到Android的富文本处理,通常会用到Spannable和SpannableString类。本篇文章将详细讲解如何在Android中...

    Android自定义TextView带圆角及背景颜色

    总结起来,通过创建自定义的ColorfulCornerTextView,我们实现了TextView的圆角和背景颜色的动态设置,这使得在Android应用中能够更加便捷地调整视图样式,而无需为每种颜色创建单独的XML背景资源。这样的自定义组件...

    Android TextView设置背景色与边框的方法详解

    在许多应用界面设计中,我们常常需要对TextView进行美化,比如设置背景色和边框。本文将详细介绍如何在Android中为TextView设置背景色和边框。 首先,为了实现背景色和边框效果,我们需要使用Android的XML资源文件...

    android textview 部分文本变色,点击跳转

    3. `ForegroundColorSpan`: 我们可以使用`ForegroundColorSpan`来改变文本颜色。 ```java ss.setSpan(new ForegroundColorSpan(Color.BLUE), 9, 14, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); ``` 这段代码将"示例文本...

    Android TextView使用SpannableString设置复合文本的方法详解

    首先,我们来看BackgroundColorSpan,它用于设置文本的背景颜色。例如,如果我们要将“我们”这两个字设为绿色背景,可以这样操作: ```java SpannableString spanText = new SpannableString("我们 -- //...

    Android自定义TextView带圆角边框颜色(动态更改边框颜色)

    现在,你可以在代码中通过`WithBordersTextView`对象调用`setBorderColor`、`setBorderWidth`和`setCornerRadius`方法,实现动态更改边框颜色和形状的功能。例如: ```java WithBordersTextView textView = ...

    一个Textview的内容呈现多种颜色

    在Android开发中,`TextView`是用于展示文本的常见组件,但有时我们可能需要让`TextView`中的不同部分显示不同的颜色,以增加视觉效果或突出关键信息。本篇将详细介绍如何实现一个`TextView`的内容呈现多种颜色,并...

    设计模式 策略模式 以Android 中TextView绘制文本、颜色为背景说明

    我们可以定义不同的策略(即策略接口和其实现)来处理文本颜色和背景,让`TextView`在运行时根据需要选择合适的策略。 首先,我们需要定义一个策略接口,例如`TextDisplayStrategy`,它包含一个方法用于设置文本的...

    textview文字样式包含部分文字事件

    通过`android:text`属性可以设置要显示的文本,而`android:textColor`用来设定文字颜色,`android:background`则用于设置文字背景颜色。这些基本属性在XML布局文件中可以直接配置,也可以在代码中动态修改。 然而,...

    textView属性

    - **字体颜色**:使用`android:textColor`属性设置文本颜色,可以是颜色值或者引用资源。 - **字体类型**:`android:typeface`属性用于设定字体风格,如normal、monospace、italic等。 3. **对齐方式** - **水平...

    Android Textview颜色并可以点击

    总之,Android中的TextView提供了丰富的定制选项,开发者可以根据需求灵活调整文本颜色和交互行为,创造出各种各样的用户界面。通过熟练掌握这些技巧,你将能够更好地控制应用中的文本展示和用户交互。

    Android中TextView显示圆圈背景或设置圆角的方法

    接下来我们来看一下,怎么在Java代码部分怎么设置TextView的背景颜色,其实很简单的就一句话。 tvTemp.setBackgroundColor(Color.parseColor(#00FF00)); 我们在xml布局文件中就可以直接调用drawable文件代码如下:

    安卓textView相关-advanced-textview各种高级功能的textview.rar

    在advanced-textview中,可能会有自定义的样式类,例如添加阴影效果、渐变色背景、自定义字体等。 2. **富文本显示**:除了纯文本,TextView还可以显示HTML或Spanned对象,实现富文本格式,如粗体、斜体、下划线、...

    TextView 加边框

    我们可以创建一个 XML 文件,定义边框的样式和颜色,然后将其设置为 TextView 的背景属性。这种方法可以实现各种样式的边框,包括圆角边框、圆形边框等。 四、 XML 文件的实现 在 XML 文件中,我们可以使用 `...

    Android TextView查看更多

    1. 在布局文件中创建`TextView`,并设置显示文本、最大行数和省略策略。 2. 为`TextView`添加点击事件监听器,根据点击状态切换显示全文或截断文本。 3. 可选地,调整`TextView`的样式以增加交互感。 通过以上方法...

    20多种TextView文字效果例子.zip

    本例子演示了给TextView中的字体设置:百度超链接,电话, 邮件, 短信, 彩信, 地图, 背景色, 前景色, 正常、 粗体、 斜体、 粗斜体、下划线、 删除线、 上标、 下标 、 点击跳转、 设置字体、 字体大小等 ...

Global site tag (gtag.js) - Google Analytics