Android之UI组件TextView的属性大集合
下载原码地址:http://download.csdn.net/detail/rhljiayou/3917103
1、先展示项目结构图:
主界面:
链接手机/网页/邮件/地址的界面效果:
文本显示内容处理界面:
TextView显示图片的界面:
2、主界面很简单就三个按钮事件
package cn.csdn.activity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class TextViewLianxiActivity extends Activity {
Button button1=null;
Button button2=null;
Button button3=null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViews();
/**手机/网页/邮件/地址/全部**/
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent();
intent.setClass(TextViewLianxiActivity.this, AddressTextView.class);
startActivity(intent);
}
});
/**文本内容处理**/
button2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent();
intent.setClass(TextViewLianxiActivity.this, FontTextView.class);
startActivity(intent);
}
});
/**显示图片和背景图片**/
button3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent();
intent.setClass(TextViewLianxiActivity.this, ImageTextView.class);
startActivity(intent);
}
});
}
private void findViews() {
button1=(Button) findViewById(R.id.button1);
button2=(Button) findViewById(R.id.button2);
button3=(Button) findViewById(R.id.button3);
}
}
main.xml文件很简单:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/test" />
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="链接手机/网页/邮件/地址" />
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="文本显示内容处理" />
<Button
android:id="@+id/button3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TextView中显示图片" />
</LinearLayout>
链接手机/网页/邮件/地址的xml代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<!-- 网页 -->
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:autoLink="web"
android:text="@string/webUrl" />
<!-- 邮箱 -->
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:autoLink="email"
android:text="@string/email" />
<!-- 手机号码 -->
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:autoLink="phone"
android:text="@string/phoneNumber" />
<!-- 以上全部 -->
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:autoLink="all"
android:background="#00ff00"
android:text="@string/autoAll" />
<!-- 地图地址 -->
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:autoLink="map"
android:text="@string/mapUrl" />
<!-- 用html显示超连接 -->
<TextView
android:id="@+id/tvHtml"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
AddressTextView代码:
package cn.csdn.activity;
import android.app.Activity;
import android.os.Bundle;
import android.text.Html;
import android.widget.TextView;
public class AddressTextView extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.address);
TextView view=(TextView) findViewById(R.id.tvHtml);
String string="<a href='#'>这是用html超链接实现的</a>";
view.setText(Html.fromHtml(string));
}
}
注意:
android:autoLink=”email” :会出现unsupported action,可能是模拟器bug,须探究
另外使用Html.fromHtml时,超链接只具备外观,不能跳转
谷歌地图:
设置 android:autoLink="map"后需要有google地图才可以 否则会报错
文本显示内容处理界面xml的代码:
可以在textView中设置我们想要的任何效果
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="正常的文本内容" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textStyle="italic"
android:textColor="#ff0000"
android:text="倾斜的带颜色的字体" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#00ff00"
android:textStyle="bold"
android:textSize="30dp"
android:text="加粗,背景颜色,字体30dp" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="使文字显示*的字体"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#ffffff"
android:text="使文字显示*的字体"
android:password="true"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="20dp"
android:text="只显示一行字符串超出屏幕为'...'dsfusdiofjdsiofjsdiofjoisdjfiosdjfoisdjfoisdf"
android:singleLine="true" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="20dp"
android:text="字符串超出屏幕为 换行显示这些 字符串 d"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textScaleX="0.5"
android:textColor="#ff0000"
android:text="红色字体设置显示文字的间隔为0.5" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textScaleX="2.0"
android:textColor="#ff0000"
android:text="红色字体设置显示文字的间隔为2.0" />
<TextView
android:layout_width="200px"
android:layout_height="wrap_content"
android:textSize="20dp"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:focusable="true"
android:focusableInTouchMode="true"
android:scrollHorizontally="true"
android:text="文字滚屏文字跑马灯效果文字滚屏文字跑马灯效果" />
<cn.csdn.activity.BorderTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="10dp"
android:text="带边框的文字"/>
</LinearLayout>
解释一下跑马灯效果的一些属性:
android:ellipsize="marquee" textview中样式是跑马灯效果。 android:marqueeRepeatLimit="marquee_forever"
循环次数,这里是无限循环,可以根据需要写具体的次数,例如5。
android:singleLine="true"
textview中字体单行显示,否则会换行,不会出现跑马灯效果。
android:focusable="true" android:focusableInTouchMode="true"
使textview获取焦点,这样字体就会自动滚动。
上面带边框的BorderTextView是自己定义好的代码如下:
package cn.csdn.activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.widget.TextView;
public class BorderTextView extends TextView {
public BorderTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setColor(android.graphics.Color.GREEN);
canvas.drawLine(0, 0, this.getWidth() - 1, 0, paint);
canvas.drawLine(0, 0, 0, this.getHeight() - 1, paint);
canvas.drawLine(this.getWidth() - 1, 0, this.getWidth() - 1,
this.getHeight() - 1, paint);
canvas.drawLine(0, this.getHeight() - 1, this.getWidth() - 1,
this.getHeight() - 1, paint);
}
}
写好这段代码只要在xml文件用就行了;
TextView显示图片:
通过设置背景的方式显示
android:background="@drawable/icon"
设置图片在textView的锚点位置
android:drawableBottom="@drawable/icon"
android:drawableTop="@drawable/icon"
android:drawableLeft="@drawable/icon"
android:drawableRight="@drawable/icon"
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/icon"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableTop="@drawable/icon"
android:textColor="#ff0000"
android:textSize="20dp"
android:text="图像在文字上方"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableBottom="@drawable/icon"
android:textColor="#ff0000"
android:textSize="20dp"
android:text="图像在文字下方"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/icon"
android:textColor="#ff0000"
android:textSize="20dp"
android:text="图像在文字左方"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableRight="@drawable/icon"
android:textColor="#ff0000"
android:textSize="20dp"
android:text="图像在文字右方"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/icon"
android:textColor="#ff0000"
android:textSize="20dp"
android:gravity="center"
android:text="文字在图片上中间"/>
</LinearLayout>
ok!!代码到此为止,好多属性需要自己查文档来自己学习,这只是一部分属性!!
大家可以下载源代码来研究一下!!
http://download.csdn.net/detail/rhljiayou/3917103