您的位置:首页 > 移动开发 > Android开发

Android-文本类组件

2016-03-23 21:47 405 查看
1.应用TextView显示多种样式的文本

Android:autolink:用于指定是否将指定格式的文本转换为可单击的超级链接形式,属性值有none,web,email,phone,map和all

Android:drawableBottom/Left/Right/Top:用于在文本框内文本的指定方位绘制指定图像

Android:singleLine:用于指定当前文本框是否为单行模式,其属性值为true或false

在java文件中改变文字颜色的两种方法:

1.设置文本时,用到了HTML标记

TextView tView1=(TextView)findViewById(R.id.tv3);
tView1.setText(Html.fromHtml("大家好<font color=red>改变局部颜色</font>!"));


2.使用SpannableStringBuilder对象的setSpan方法设置文本的显示样式,最后将要显示的文本通过setText方法显示在id为tv4的TextView组件中。

String str="根据段落改变文本颜色";
TextView tView2=(TextView)findViewById(R.id.tv4);
SpannableStringBuilder styleBuilder=new SpannableStringBuilder(str);
styleBuilder.setSpan(new ForegroundColorSpan(Color.GREEN), 0,4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
styleBuilder.setSpan(new ForegroundColorSpan(Color.YELLOW), 4, 6, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
styleBuilder.setSpan(new ForegroundColorSpan(Color.RED), 6, 11, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tView2.setText(styleBuilder);


2.为文本框组件添加滚动条

滚动视图用ScrollView表示,用于为其他组件添加滚动条。滚动视图是android.widget.FrameLayout(帧布局管理器)的子类。因此,在滚动视图中可以添加任何想要放入其中的组件。但是,一个滚动视图只能放置一个组件。如果想要放置多个,可以先放置一个布局管理器,再将要放置的其他组件放置到该布局管理器中。

滚动视图ScrollView只支持垂直滚动,如果想要实现水平滚动条,可以使用HorizonalScrollView实现。

在MainActivity类的onCreate()方法中,首先获取布局文件中添加的先行布局管理器,然后创建一个滚动视图和一个文本框对象,再将文本框对象添加到滚动视图中,并设置文本框中要显示的文本,最后将滚动视图添加到先行布局管理器中。

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout ll=(LinearLayout)findViewById(R.id.ll);
ScrollView scroll=new ScrollView(MainActivity.this);
TextView textView=new TextView(MainActivity.this);
textView.setPadding(10, 10, 10, 10);
textView.setTextSize(25);
scroll.addView(textView);
textView.setText("“与怪兽搏斗的人要谨防自己因此而变成怪兽。如果阁下长时间的盯着"
+ "深渊,那么,深渊也会同样回望着阁下。”"
+ "与恶龙纠缠过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视。"
+ "对有些人而言,相遇即是告别。就像流星 划过天际,发出耀眼光芒的同时,也燃烧 殆尽。"
+ "他们唯一能做的,就是让那道划痕 尽可能地浅。"
+ "冥冥中,真的有一双翻云覆雨手,心不在焉的摆弄着芸芸众生,"
+ "让我们毫无缘由的爱,莫名其妙的恨。让我们在轮回的漩涡中彼此依赖");
ll.addView(scroll);

}


3.使用文本框控件记录历史查询记录

主要用到了SearchView组件及其setOnQueryTextListener方法和onQueryTextSubmit方法

SearchView是Android提供的一个搜索组件,其setOnQueryTextListener方法用来表示输入框文字的监听器,而onQueryTextSubmit方法则用来执行开始查询操作。

当使用SearchView组件查询时,使用文本框的getText方法获取查询内容,并且判断该内容是否为控件,如果不为空,则记录该查询内容,并且使用setText方法显示在文本框中。

在res/menu/创建一个actions.xml文件,用来存储查询动作视图项

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item
android:id="@+id/action_search"
android:actionViewClass="android.widget.SearchView"
android:icon="@android:drawable/ic_menu_search"
android:showAsAction="ifRoom"
android:title="@string/search">
</item>
<item
android:id="@+id/item1"
android:icon="@drawable/icon1"
android:showAsAction="ifRoom"
android:title="@string/item1">
</item>
<item
android:id="@+id/item2"
android:icon="@drawable/icon2"
android:showAsAction="ifRoom"
android:title="@string/item2">
</item>
<item
android:id="@+id/item3"
android:icon="@drawable/icon3"
android:showAsAction="ifRoom"
android:title="@string/item3">
</item>

</menu>


Activity类中,首先重写onCreate()方法,该方法中获取布局文件中的TextView组件;然后重写onCreateOptionMenu方法,获得SearchView,然后提交查询事件,并显示在TextView组件中,最后重写onOptionItemSelected()方法,该方法中,弹出用户查询的数据。

private TextView history;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
history = (TextView) findViewById(R.id.history);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.actions, menu);
SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();

searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {

@Override
public boolean onQueryTextSubmit(String query) {// 处理提交查询事件
String result = history.getText().toString();
if (!query.isEmpty()) {
result += query + "\n";
}
history.setText(result);
Toast.makeText(ActionViewActivity.this, "查询:" + query, Toast.LENGTH_LONG).show();
return true;
}

@Override
public boolean onQueryTextChange(String newText) {// 处理查询文本修改事件

return true;
}
});
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
Toast.makeText(this, "选择: " + item.getTitle(), Toast.LENGTH_SHORT).show();
return true;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: