【Android基础 1.3】Text and scrolling views

本次codelab

前几次的 codelab 都比较简单,都是基于 Layout Editor 的,控件拖来拖去,没啥好讲的。那么这次的主要内容的是 TextView 和 ScrollView。

ScrollView 提供了一个可以滚动的视图,它是 FrameLayout 的子类。ScrollView 只能有一个子 View,当然这个子 View 它本身可以是 ViewGroup(比如 LinearLayout)可以包含很多UI控件。

复杂的视图结构可能造成性能的降低。在 ScrollView 中 放一个垂直布局的 LinearLayout 是个不错的选择。在一个ScrollView 中所有的 UI 控件都会被加载到内存中,即使它们没有显示出来,这使得 ScrollView 可以流畅的滚动视图。但是,这也造成了 ScrollView 可能会使用很多内存,这会影响 app 的性能。如果想要显示很长的列表,并且是可编辑,可删除的,那么你可以考虑 RecyclerView。

接下来的内容:

  • 使用 XML 添加多个 TextView
  • 显示 HTML 格式的文本
  • 在文本中插入网页连接

显示 HTML 格式的文本

  • TextView 会解析支持的 HTML 标签(<br></br><i></i>),其他的标签都会被忽略,这两个只是对文本的加粗和斜体,功能比较少。

  • \n表示换行

  • 加粗和斜体可以一起使用:<b><i>...words...</i></b>

  • 如果要使用 符号,必须进行转义,其他非 ASCII 字符也需要转义。

插入链接

在 TextView 中添加android:autoLink="web",这样便可以自动识别文本中的链接,并且进行高亮处理,点击可以调转到浏览器。

Solution Code

完成 Task 1 和 Task 2 后的 XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
        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"
        tools:context=".MainActivity">

    <TextView
            android:id="@+id/article_heading"
            android:layout_width="match_parent"
            android:background="@color/colorPrimary"
            android:textColor="@android:color/white"
            android:padding="@dimen/text_padding"
            android:text="@string/article_title"
            android:textAppearance="@android:style/TextAppearance.DeviceDefault.Large"
            android:textStyle="bold"
            android:layout_height="wrap_content"/>

    <ScrollView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/article_heading">

        <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">

            <TextView
                    android:id="@+id/article_subheading"
                    android:layout_width="wrap_parent"
                    android:layout_height="wrap_content"
                    android:padding="@dimen/text_padding"
                    android:text="@string/article_subtitle"
                    android:textAppearance=
                            "@android:style/TextAppearance.DeviceDefault"/>

            <TextView
                    android:id="@+id/article"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:lineSpacingExtra="5sp"
                    android:padding="@dimen/text_padding"
                    android:autoLink="web"
                    android:text="@string/article_text"/>
        </LinearLayout>

    </ScrollView>

</RelativeLayout>

Homework

Question 1

How many views can you use within a ScrollView? Choose one:

  • One view or one view group

Question 2

Which XML attribute do you use in a LinearLayout to show views side by side? Choose one:

  • android:orientation="horizontal"

Question 3

Which XML attribute do you use to define the width of the LinearLayout inside the scrolling view? Choose one:

  • android:layout_width="match_parent"

Solution

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

    <TextView
            android:id="@+id/article_heading"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/colorPrimary"
            android:textColor="@android:color/white"
            android:padding="@dimen/text_padding"
            android:layout_margin="16dp"
            android:text="@string/article_title"
            android:textAppearance="@android:style/TextAppearance.DeviceDefault.Large"
            android:textStyle="bold"/>

    <ScrollView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/article_heading">

        <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">

            <TextView
                    android:id="@+id/article_subheading"
                    android:layout_width="100dp"
                    android:layout_height="wrap_content"
                    android:padding="@dimen/text_padding"
                    android:text="@string/article_subtitle"
                    android:textAppearance=
                            "@android:style/TextAppearance.DeviceDefault"/>

            <TextView
                    android:id="@+id/article"
                    android:layout_width="0dp"
                    android:layout_weight="1"
                    android:layout_height="wrap_content"
                    android:lineSpacingExtra="5sp"
                    android:padding="@dimen/text_padding"
                    android:autoLink="web"
                    android:text="@string/article_text"/>
        </LinearLayout>

    </ScrollView>

</RelativeLayout>

homwwor1.3

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值