Android UI控件一

 
Android UI控件一
一、TextView显示文本控件

1.显示丰富的文本(URL、字体大小、颜色)

在TextView中预定义了一些类似HTML的标签,使用这些标签可以用Html.fromHtml方法将这些标签的字符串转换成Charsequence对象,如果想在显示的本文中将URL地址、邮箱地址、电话产生超链接的效果可以使用Android:autoLink来设置;值:

None—不匹配任何链接(默认)       Web—网址          email—邮箱

Phone—电话号码          map—匹配映射网址      all—匹配所有链接

设置超链接:setMovementMethod(LinkMovementMethod.getInstance())

Android UI控件一

一、TextView显示文本控件

      1.显示丰富的文本(URL、字体大小、颜色)

在TextView中预定义了一些类似HTML的标签,使用这些标签可以用Html.fromHtml方法将这些标签的字符串转换成Charsequence对象,如果想在显示的本文中将URL地址、邮箱地址、电话产生超链接的效果可以使用Android:autoLink来设置;值:

None—不匹配任何链接(默认)       Web—网址          email—邮箱

Phone—电话号码          map—匹配映射网址      all—匹配所有链接

设置超链接:setMovementMethod(LinkMovementMethod.getInstance())

实现案例:

public class MainActivity extends Activity { 
  
    private TextView tv1, tv2; 
  
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
        tv1 = (TextView) findViewById(R.id.textview01); 
        tv2 = (TextView) findViewById(R.id.textview02); 
        // 添加一段Html标志 
        String html = "<font color='red'>I love Android!</font><br />"; 
        html += "<font color='#0000ff'><big><i>I love Android!</i></big></font><p>"; 
        html += "<big><a href='http://www.baidu.com'>百度</big>"; 
        CharSequence charSequence = Html.fromHtml(html); 
        tv1.setText(charSequence); 
        // 设置超链接 
        tv1.setMovementMethod(LinkMovementMethod.getInstance()); 
  
        String text = "我的URL:http://www.sina.com\n"; 
        text += "我的email:abcd@163.com\n"; 
        text += "我的电话: + 86 010-809253809"; 
        tv2.setText(text); 
        tv2.setMovementMethod(LinkMovementMethod.getInstance()); 
    } 
}

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" > 
  
    <TextView 
        android:id="@+id/textview01"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="20sp" /> 
  
    <TextView 
        android:id="@+id/textview02"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:autoLink="all"
        android:padding="20sp"
        android:text="@string/link"
        android:textSize="20sp" /> 
  
</LinearLayout>

2.显示表情图像和文字

实现案例:

 

    public int getResourceId(String name) { 
        try { 
            // 根据资源的ID的变量名获得Field的对象,使用反射机制来实现的 
            Field field = R.drawable.class.getField(name); 
            // 取得并返回资源的id的字段(静态变量)的值,使用反射机制 
            return Integer.parseInt(field.get(null).toString()); 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 
        return 0; 
    } 
  
    private TextView tv1; 
  
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
        tv1 = (TextView) findViewById(R.id.textview01); 
        tv1.setTextColor(Color.WHITE); 
        tv1.setBackgroundColor(Color.BLACK); 
        tv1.setTextSize(20); 
        String html = "图像1<img src='a0'/>图像2<img src='a1'/><p>"; 
        html += "图像3<a href='http://www.baidu.com'><img src='a2'/></a>图像4<img src='a3'/><br/>"; 
  
        CharSequence charSequence = Html.fromHtml(html, new ImageGetter() { 
            public Drawable getDrawable(String source) { 
                // 获得系统资源信息,比如图片 
                System.out.println(source + "/" + getResourceId(source)); 
                Drawable drawable = getResources().getDrawable( 
                        getResourceId(source)); 
                if (source.equals("a1")) { 
                    drawable.setBounds(0, 0, drawable.getIntrinsicWidth() / 4, 
                            drawable.getIntrinsicHeight() / 4); 
                } else { 
                    drawable.setBounds(0, 0, drawable.getIntrinsicWidth() / 2, 
                            drawable.getIntrinsicHeight() / 2); 
                } 
                return drawable; 
            } 
        }, null); 
  
        tv1.setText(charSequence); 
        tv1.setMovementMethod(LinkMovementMethod.getInstance()); 
    }

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" > 
  
    <TextView 
        android:id="@+id/textview01"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp" /> 
  
</LinearLayout>


3.单击链接弹出Activity

实现案例

public class MainActivity extends Activity { 
  
    TextView tv1, tv2; 
  
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
  
        tv1 = (TextView) findViewById(R.id.textview01); 
        tv2 = (TextView) findViewById(R.id.textview02); 
        String text1 = "显示Activity1"; 
        String text2 = "显示Activity2"; 
        // 主要用于拆分字符串 
        SpannableString spannableString1 = new SpannableString(text1); 
        SpannableString spannableString2 = new SpannableString(text2); 
  
        spannableString1.setSpan(new ClickableSpan() { 
            public void onClick(View widget) { 
                Intent intent = new Intent(MainActivity.this, Activity1.class); 
                startActivity(intent); 
            } 
        }, 0, text1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
  
        spannableString2.setSpan(new ClickableSpan() { 
            public void onClick(View widget) { 
                Intent intent = new Intent(MainActivity.this, Activity2.class); 
                startActivity(intent); 
            } 
        }, 0, text1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
  
        tv1.setText(spannableString1); 
        tv2.setText(spannableString2); 
        tv1.setMovementMethod(LinkMovementMethod.getInstance()); 
        tv2.setMovementMethod(LinkMovementMethod.getInstance()); 
    } 
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" > 
  
    <TextView 
        android:id="@+id/textview01"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="20sp" /> 
  
    <TextView 
        android:id="@+id/textview02"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="20sp" /> 
  
</LinearLayout>

4.TextView实现跑马灯效果

实现案例
public class MainActivity extends Activity { 
  
    TextView tv1; 
  
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
  
        tv1 = (TextView) findViewById(R.id.textview01); 
        tv1.setBackgroundColor(Color.YELLOW); 
        String html = "北京时间4月16日消息,在今天进行的<a href='http://www.baidu.com' target=_blank>NBA常规赛</a>中,火箭客场挑战太阳。在取得45胜35负后,火箭目前暂列西部第6位。太阳24胜56负西部垫底,而且已经确定创造队史第二差战绩。如果火箭战胜太阳,他们将朝着锁定西部第6更进一步,否则还有可能在常规赛结束后下滑到西部第8。"; 
        CharSequence charSequence = Html.fromHtml(html); 
  
        tv1.setText(charSequence); 
        tv1.setMovementMethod(LinkMovementMethod.getInstance()); 
  
    } 
}

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" > 
  
    <TextView 
        android:id="@+id/textview01"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:ellipsize="marquee"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:marqueeRepeatLimit="marquee_forever"
        android:padding="10dp"
        android:singleLine="true"
        android:textSize="20sp" /> 
  
</LinearLayout>

以上基本的核心代码都已经贴上,如有疑问留言交流!!!其中第四个实现跑马灯效果中点击超链接无反应,如果有能实现的,也请留言哦,感谢了!!!

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值