Android 開發第四講 TextView的使用
一丶TextViw
1.1 TextView主要作用
TextView可以進行如下
- 文字大小,顏色設置,顯示文字
- 顯示不下文字的時候 使用 ....來進行省略
- 文件+icon 形式進行顯示
- 中划線,下划線等 顯示設置.
- 文字效果.
總結來說.文字顯示控件支持的屬性很多.需要編寫Xml進行體會.
1.2 Xml設置Button按鈕. java入口設置Button使用
Button后面會說.這里先貼出代碼. 這里會響應Button點擊.所以后續會說.
這里先做基本的.
Layout Activity_main.xml修改為如下
<?xml version="1.0" encoding="utf-8"?><!--設置為相對布局-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<!-- 設置Button 並且設置ID-->
<Button
android:id="@+id/Btn_Text"
android:layout_width="match_parent"
android:text="點擊我"
android:layout_height="wrap_content">
</Button>
</LinearLayout>
1.3 設置Button的響應事件
在Src中的 MainActivity中代碼寫入如下
package com.ibinary.myapplication;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.sax.StartElementListener;
import android.view.View;
import android.widget.Button;
// Alt + Shift + Entery 引入此包
public class MainActivity extends AppCompatActivity {
// 聲明Button 一會使用 如果找不到則引入這個包 Alt+Shift+Enter
private Button m_BtnText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 找到這個Button 使用 findBiewById 尋找R.id 下的我們定義的ID 但是返回值是view類型,
//所有我們要進行轉換 轉換為Button Button
m_BtnText = (Button) findViewById(R.id.Btn_Text);
// 響應 按鈕點擊消息 設置點擊事件
// 匿名內部類
m_BtnText.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
//設置點擊事件,跳轉到 TextView 中. 所以我們要建立一個TextView的Active
//建立之后會產生一個 TextView 以及一個activity_text_view,並且我們需要在AndroidManifest.xml中注冊
//從哪里 跳轉到哪里
Intent intent = new Intent(MainActivity.this,TextViewActive.class);
startActivity(intent);
}
});
}
}
上述代碼表示我們點擊按鈕的時候,跳轉到TextViewActive中執行
但是這里我們沒有創建.所以我們可以創建一個新的Active
如下
建立的空 Activity修改為 TextViewActive即可.
建立好之后會自動 在 AndroidMinifest.xml中注冊.讓我們使用.
然后也會自動在Layout下面創建一個activity_text_view.xml布局文件,當然名字在你創建Activity的時候
可以自己指定
二丶TextView Xml寫法
2.1 TextView的常用屬性的寫法
TextView中的Text屬性可以指定你要顯示的名稱.可以直接寫,也可以引用另一個Xml文件中信息
在Android Studio中 Values下記錄的這是一些信息.
比如strings.xml colors.xml等信息
android:textColor = "#000000" 可以設置字體的顏色
android:text="HelloWorld" 設置顯示的文字,可以直接設置也可以引用設置
android:textSize="20sp" 可以設置字體大小. 字體大小因為屏幕原因使用sp表示.布局使用dp表示
android:maxLines="1" 設置為一行,不換行
android:ellipsize="end" 可以設置為過長不顯示
xml編寫為如下
strings.xml中如下
<resources>
<string name="app_name">My Application</string>
<string name="TestVie1">我是第一個TextView是被引用的</string>
</resources>
active_text_view.xml如下
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".TextViewActive">
<!-- 引用方式顯示 並且設置字體大小-->
<TextView
android:id="@+id/Text_ViewId1"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:textColor="#834e18"
android:textSize="20sp"
android:text="@string/TestVie1">
</TextView>
<!-- 直接寫的顯示-->
<TextView
android:id="@+id/Text_ViewId2"
android:layout_marginTop="10dp"
android:layout_width="wrap_content"
android:layout_height="20dp"
android:textColor="#00ff33"
android:text="我是不被引用的">
</TextView>
<!--設置TextView為不換行,以及顯示為...表示-->
<TextView
android:layout_marginTop="20dp"
android:id="@+id/Text_ViewId3"
android:layout_width="60dp"
android:maxLines="1"
android:layout_height="20dp"
android:text="過長顯示為省略號"
android:ellipsize="end"
android:textColor="#000033">
</TextView>
</LinearLayout>
效果圖如下
2.2 TextView 顯示為文字+圖片的形式
如果想顯示圖片.那么我們就要找一個圖片.並且放到 drawable中.然后進行引用
屬性如下:
android:drawableRight = "@drawable/xxxx圖片" 顯示圖片在文字的右邊,同樣有上邊左邊下邊等
添加圖片到drawable中.選中drawable直接Ctrl+V粘貼即可.或者你自己選擇圖片路徑
對應xml
<TextView
android:id="@+id/Text_View4"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:textSize="20sp"
android:layout_marginTop="20dp"
android:text="請看右邊"
android:drawablePadding="3dp"
android:drawableRight="@drawable/down">
</TextView>
圖片資源自己找. 效果圖如下
2.3 TextView設置中划線以及下划線
要設置中划線 就要寫代碼進行設置了,不過我們要建立一個新的textview 並為其分配一個ID便於我們操作
寫代碼前兩句還是一樣
1.聲明控件
2.找到控件,並強轉.
只不過此時我們需要調用其中的方法了.而不是設置事件
在 TextViewActive下的代碼如下
代碼如下:
package com.ibinary.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.graphics.Paint;
import android.os.Bundle;
import android.widget.TextView;
public class TextViewActive extends AppCompatActivity {
//聲明控件
private TextView m_TextViewId5;
private TextView m_TextViewId6;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_text_view);
//通過ID找到控件
m_TextViewId5 = (TextView) findViewById(R.id.Text_ViewId5);
m_TextViewId6 = (TextView) findViewById(R.id.Text_ViewId6);
//調用方法設置
//設置中划線,但是可能會有鋸齒.所以調用去掉鋸齒的方法
m_TextViewId5.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);
m_TextViewId5.getPaint().setAntiAlias(true);
//設置下划線 Paint.UNDERLINE_TEXT_FLAG
m_TextViewId6.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);
//第二種形式使我們可以從html中設置
m_TextViewId6.setText(Html.fromHtml("<u>Html形式</u>"));
}
}
active_view設置的xml描述如下
<TextView
android:id="@+id/Text_ViewId5"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:text="中划線"
android:layout_marginTop="20dp"
android:textSize="20sp">
</TextView>
點擊按鈕運行則會看到最終效果
點擊之后則會跳轉到TextView中
已經實現了中划線的效果
下划線如下
html如下
html需要了解 html標簽以及語法等. 代碼的話要使用 setText來設置.
2.4 跑馬燈效果設置
跑馬丁就是 文字循環顯示
那么我們就要設置以下幾個屬性
android:singleLine="true" //設置為單行顯示,不過被棄用了.后面可以百度看一下解決方法
android:ellipsize="marquee" // 顯示條目設置
android:marqueeRepeatLimit="marquee_forever" //設置循環次數,marquee_forever代表一致循環
android:focusable="true" //設置焦點
android:focusableInTouchMode="true" //設置焦點模式
xml代碼如下
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30sp"
android:text="IBinary 博客園 IBinary 博客園 IBinary 博客園"
android:textColor="#9933ff"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:focusable="true"
android:focusableInTouchMode="true">
</TextView>
運行之后就會顯示