Android-文本类组件

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;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值