TextView

3.1更改与显示文字标签——TextView标签的使用

main.xml下修改TextView

<TextView android:id="@+id/myTextView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/str_1" android:layout_x="30px" android:layout_y="50px" >

这里设置了一个TextView显示框,设置了显示ID,显示内容和显示的布局。

要怎么显示TextView的内容呢?请看 工程名.java 如下

/*必须引入widget.TextView才能在程序声明TextView对象*/ import android.widget.TextView;

public class EX03_01 extends Activity { /*必须引入widget.TextView才能在程序声明TextView对象*/ private TextView mTextView01;
/** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
/*
更新main.xml Layout�此时
mTextView01:text�str_1*/ setContentView(R.layout.main);

/*使用findViewById函数,利用ID找到该TextView对象* / mTextView01 = (TextView) findViewById(R.id.myTextView01);
String str_2 = "
欢饮来到AndroidTextView世界
"; mTextView01.setText(str_2);
} }

我们的目标是改变显示的文字TextView要显示str_2

但是我们定义的str_1,main.xml是固定显示的。所以我们通过了str_2实现了字符串的显示的更改。

实验一完成。实验拓展

TextView里的setText支持多态的构造方法:

pubic final void setText(chargeSequence text)

pubic final void setText(int resid)

pubic final void setText(int resid,TextView.BufferType type)

pubic final void setText(char[],int start,int len)

这里的start是显示开始的字节,len为显示的长度

3.2更改窗口画面底色——drawable颜色常数的方法

主程序如下:

public class ex3 extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }

我们这里只要修改main.xmlOK了,因为他是设置界面的。

main.xml如下

主界面部分

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/white"  >

TextView部分

这里是显示std_id字符串,显示颜色为darkgray

<TextView  android:id="@+id/widget28" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/str_id" android:textColor="@drawable/darkgray" android:layout_x="61px" android:layout_y="69px" > </TextView>

这里显示显现str_pwd字符串,显示颜色为darkgray

<TextView android:id="@+id/widget29" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/str_pwd" android:textColor="@drawable/darkgray" android:layout_x="61px" android:layout_y="158px" > </TextView

EditView部分:

这里设置一个EditText <EditText android:id="@+id/widget31" android:layout_width="120dip" android:layout_height="wrap_content" android:textSize="18sp" android:layout_x="114px" android:layout_y="57px" > </EditText>

这里设置一个EditText <EditText android:id="@+id/widget30" android:layout_width="120dip" android:layout_height="wrap_content" android:textSize="18sp" android:password="true" android:layout_x="112px" android:layout_y="142px" > </EditText>

不过这里要有whitedarkgray就要先定义这两个颜色变量

values下新建一个color.xml

<?xml version="1.0" encoding="utf-8"?> <resources> <drawable name="darkgray">#808080FF</drawable> <drawable name="white">#FFFFFFFF</drawable> </resources>

这样的就我们就实现了随意改变窗口的颜色了。yeah

实验拓展:

可以利用drawable实现定义众多的颜色参量(在resource里面),方便使用。也可以通过程序随意改变窗口的颜色。程序如下

Resources resources = getBaseContext .getResources();

Drawable HippoDrawable =resources.getDrawable(R.drawable.white);

TextView tv = (TextView) findViewById(R.id.text);

tv.SetBackground(HippoDrawable );

3.更改TextView文字的颜色——drawable颜色常数的方法

实验说明,通过上例,我们知道Drawable来定义颜色常数,但实际上是用程序控制TextView和或者其他对象(setBackgroundDrawable,

如判断对象被单击是背景颜色亮起和单失去背景颜色时,又恢复原来的颜色。

以下的范例将拓展前一个范例的实现,预先设计两个TextView对象,并在onCreat同时通过两种程序描述方法,实时更改原来Layout里的背景色以及文字颜色,最后使用Android默认颜色常数来更改文字的背景色。

主程序如下:

public class ex3 extends Activity {
private TextView mTextView01; private TextView mTextView02;
/** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);
mTextView01 = (TextView) findViewById(R.id.myTextView01); mTextView01.setText("
我是应用程序的背景颜色");

//更改文字内容  Resources resources = getBaseContext().getResources(); Drawable HippoDrawable = resources.getDrawable(R.drawable.white); mTextView01.setBackgroundDrawable(HippoDrawable);

//设置文字框的背景颜色 mTextView02 = (TextView) findViewById(R.id.myTextView02); mTextView02.setTextColor(Color.MAGENTA);

//改变文字显示的颜色 } }

程序里新建两个类成员变量:mTextView01mTextView02,这两个变量在onCreat之初,以findViewById方法使初始化为layout里面的TextView对象。在当中使用了Resource类以及Drawable类,分别创建了resources对象以及HippoDrawable对象,并将前一个范例中所所创建的R.drawable.white以及getDrawable方法加载,最后则调用了setBackgroundDrawable来更改mTextView01的文字底纹。更改TextView的文字,则使用setText方法。

3.4置换TextView文字——CharSequence数据类型和Source ID应用

实验示范如何在程序运行时,通过CharSequence依据Resource ID取出字符串,并正确更改TextView的文字。

import android.widget.TextView;

public class ex3_4 extends Activity {
private TextView mTextView02;
/** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);
mTextView02 = (TextView) findViewById(R.id.myTextView02);
CharSequence str_2 = getString(R.string.str_2); String str_3 = "
我是程序里面调用的Resource"; mTextView02.setText(str_3 + str_2); } }

两个用法是一致的。

3.5 读取手机屏幕的大小

程序如下:

import android.app.Activity; import android.os.Bundle; import android.util.DisplayMetrics; import android.widget.TextView;

public class ex3_5 extends Activity {
private TextView mTextView01; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);
/*
必须引用 android.util.DisplayMetrics */ DisplayMetrics dm = new DisplayMetrics();  getWindowManager().getDefaultDisplay().getMetrics(dm);

//得到手机分辨率 String strOpt = "手机分辨率为" + dm.widthPixels + " ⊙ " + dm.heightPixels;

//将这些文字都连接起来。
mTextView01 = (TextView) findViewById(R.id.myTextView01); mTextView01.setText(strOpt);

//输出文字。 } }

2.1的环境下运行屏幕大小为320*480

3.6样式化的定性对象——Style样式的使用

在这个实验中如何教你改变字体的大小

具体程序如下:main.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <!-- 套用樣式1TextView --> <TextView style="@style/DavidStyleText1"  android:layout_width="fill_parent"  android:layout_height="wrap_content" android:gravity="center_vertical|center_horizontal"  android:text="@string/str_text_view1" /> <!-- 套用樣式2TextView --> <TextView style="@style/DavidStyleText2" android:layout_width="fill_parent"  android:layout_height="wrap_content" android:gravity="center_vertical|center_horizontal"  android:text="@string/str_text_view2" /> </LinearLayout>

values先新建一个style.xml

具体如下:

<?xml version="1.0" encoding="utf-8"?> <resources> <style name="DavidStyleText1"> <item name="android:textSize">18sp</item> //大小 <item name="android:textColor">#EC9237</item> //颜色</style>

//设置字体的大小和text的颜色。 <style name="DavidStyleText2"> <item name="android:textSize">14sp</item> <item name="android:textColor">#FF7F7C</item> <item name="android:fromAlpha">0.0</item> <item name="android:toAlpha">0.0</item> </style> </resources>

3.14控制不同文字字体——Typeface对象使用

除了文字颜色之外,与文字对象息息相关的文字大小及字体。

TextView对象里有很多与字形相关的方法,如使用setTextSize来改变文字大小和、setTypeface来指定使用字体,设置两个按钮,其一控制字体,其二控制大小,需要解说的是通过外部资源asserts,引用外部的字体文件(True Type Font),在通过Typeface类的creatFromAsset方法,让TextView可通过setTypeface来改变字体。

具体程序如下

/*必须引用graphics.Typeface才能用creatFromAsset().�*/ import android.graphics.Typeface; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView;

public class ex3_14 extends Activity {
private TextView mText; private Button sizeButton; private Button fontButton; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);
mText=(TextView)findViewById(R.id.mytextview); sizeButton=(Button) findViewById(R.id.sizebutton); fontButton=(Button) findViewById(R.id.fontbutton); /*
设置onClickListener与按钮对象连接*/ sizeButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { /*使用setTextSize()改变字体的大小 */ mText.setTextSize(20); }  } ); fontButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { /*必须在assets创建一个fonts子文件夹 * 并放入要使用的字体文件�(.ttf) * 并提供相对路劲creatFromAsset()来创建Typeface对象*/ mText.setTypeface (Typeface.createFromAsset(getAssets(),"fonts/HandmadeTypewriter.ttf")); } } ); 关键代码
} }

原文地址:https://www.cnblogs.com/li-print/p/3292782.html