TextView:

TextView可以说是Android中最简单的基本控件,主要是用来在界面上显示一段文字和特效的效果的显示。

TextView中一些属性和它的作用:

Android所有控件都必须包含两个属性 wrap_content、match_parent(fill_parent),其中match_parent和fill_parent意思相同

Android官方推荐我们用match_parent。match_parent表示让当前控件的大小个父布局的大小一样,也就是由父布局来决定当前空间的大小。wrap_content表示让当前控件的大小能够刚好里面的内容,也就是说控件的大小由当前的控件决定。

android:text设置显示文本

Android :autoLink 设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接。可选值(none/web/email/phone/map/all)

android:textSize:设置文本的大小

android:textColor:设置文本的颜色

android:textStyle:设置文本的样式

android:singleLine:让文本显示一行

android:id 代表控件的一个标示id

android:typeface:设置文本的字体样式

android:ellipsize:当一段文字过长 怎样处理呢 “start”表示省号在开始 “end”表示省号在后面 "middle" 表示省号在中间

android:gravity:设置文本显示的位置 当设置“center” 表示文字在中间

Button:

button代表一个按钮 当用户点击 会触发事件,来执行某一个动作。以下是一个用户执行的动作

<Buttonandroid:id="@+id/btn"anroid:layout_width="wrap_content"android:layout_height:="wrap_content"/>
Buttonbutton=(Button)findByView(R.id.btn);button.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){//TODOAuto-generatedmethodstub}});

第二种 直接在xml布局中 用 android:onClick 属性为按钮指定方法名,以代替在活动中使用的 OnClickListener

<Buttonandroid:onClick="BtnOnclick"anroid:layout_width="wrap_content"android:layout_height:="wrap_content"/>

现在,当用户点击按钮时,Android系统调用activity的BtnOnclick(View)方法。为了正确执行,这个方法必须是public并且仅接受一个View类型的参数。例如:

public void BtnOnclick(View view){

}

RadioButton和CheckBox:

RadioButton一般由Radiobutton和Radiogroup组成的 当构成了一个Radiogroup 只能单选Radiobutton 没有Radiogroup 可以多个选择Radiobutton 。

CheckBox 可以选择一个或多个checkbox 。

RadioButton和RadioGroup的关系:

1、RadioButton表示单个圆形单选框,而RadioGroup是可以容纳多个RadioButton的容器

2、每个RadioGroup中的RadioButton同时只能有一个被选中

3、不同的RadioGroup中的RadioButton互不相干,即如果组A中有一个选中了,组B中依然可以有一个被选中

4、大部分场合下,一个RadioGroup中至少有2个RadioButton

5、大部分场合下,一个RadioGroup中的RadioButton默认会有一个被选中,并建议您将它放在RadioGroup中的起始位置

xml:

android:checked="true"代表是默认选择了<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="请选择您的性别:"android:textSize="9pt"/><RadioGroupandroid:id="@+id/radioGroup"android:layout_width="wrap_content"android:layout_height="wrap_content"android:contentDescription="性别"><RadioButtonandroid:id="@+id/radioMale"android:layout_width="wrap_content"android:layout_height="wrap_content"android:checked="true"android:text="男"></RadioButton><RadioButtonandroid:id="@+id/radioFemale"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="女"></RadioButton></RadioGroup><TextViewandroid:id="@+id/tvSex"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="您的性别是:男"android:textSize="9pt"/>

class:

TextViewtv=null;//根据不同选项所要变更的文本控件@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);//根据ID找到该文本控件tv=(TextView)this.findViewById(R.id.tvSex);//根据ID找到RadioGroup实例RadioGroupgroup=(RadioGroup)this.findViewById(R.id.radioGroup);//绑定一个匿名监听器group.setOnCheckedChangeListener(newOnCheckedChangeListener(){@OverridepublicvoidonCheckedChanged(RadioGrouparg0,intarg1){//TODOAuto-generatedmethodstub//获取变更后的选中项的IDintradioButtonId=arg0.getCheckedRadioButtonId();//根据ID获取RadioButton的实例RadioButtonrb=(RadioButton)MyActiviy.this.findViewById(radioButtonId);//更新文本内容,以符合选中项tv.setText("您的性别是:"+rb.getText());}});}

RadioButton和checkbox的区别

1、Radiobutton 当勾选了,再点击是不能改变没有选择 ,而checkbox 再次点击是可以改变没有选中的

2、Radiobutton的形状是圆圈型的 而checkbox的形状是矩形的。

<CheckBoxxmlns:android=android:id="@+id/check"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Thischeckboxis:unchecked"/>

publicclassMainMenuextendsActivityimplementsCompoundButton.OnCheckedChangeListener{CheckBoxcb;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);cb=(CheckBox)findViewById(R.id.check);cb.setOnCheckedChangeListener(this);}publicvoidonCheckedChanged(CompoundButtonbuttonView,booleanisChecked){if(isChecked){cb.setText("Thischeckboxis:checked");}else{cb.setText("Thischeckboxis:unchecked");}}

}

ImageButton:

显示一个可以被用户点击的图片按钮,默认情况下,ImageButton看起来像一个普通的按钮,在不同状态(如按下)下改变背景颜色。按钮的图片可用通过<ImageButton> XML元素的android:src属性或setImageResource(int)方法指定。

为了表示不同的按钮状态(焦点,选择等),你可以为各种状态定义不同的图片。一个简单的方法可以做到这点——通过XML的"selector."配置,如下:

一.创建xml文件,位置:drawable/xxx.xml,同目录下记得要放相关图片

相关属性:
android:state_selected是选中
android:state_focused是获得焦点
android:state_pressed是点击
android:state_enabled是设置是否响应事件,指所有事件

<?xmlversion="1.0"encoding="utf-8"?><selectorxmlns:android="http://schemas.android.com/apk/res/android"><!--默认时的背景图片--><itemandroid:drawable="@drawable/pic1"/><!--没有焦点时的背景图片--><itemandroid:state_window_focused="false"android:drawable="@drawable/pic1"/><!--非触摸模式下获得焦点并单击时的背景图片--><itemandroid:state_focused="true"android:state_pressed="true"android:drawable="@drawable/pic2"/><!--触摸模式下单击时的背景图片--><itemandroid:state_focused="false"android:state_pressed="true"android:drawable="@drawable/pic3"/><!--选中时的图片背景--><itemandroid:state_selected="true"android:drawable="@drawable/pic4"/><!--获得焦点时的图片背景--><itemandroid:state_focused="true"android:drawable="@drawable/pic5"/></selector>

根据这些状态同样可以设置button的selector效果。也可以设置selector改变button中的文字状态。
以下是配置button中的文字效果:

drawable/button_font.xml

<?xmlversion="1.0"encoding="utf-8"?><selectorxmlns:android="http://schemas.android.com/apk/res/android"><itemandroid:state_selected="true"android:color="#FFF"/><itemandroid:state_focused="true"android:color="#FFF"/><itemandroid:state_pressed="true"android:color="#FFF"/><itemandroid:color="#000"/></selector>

写好的效果给指定的imagebutton

<ImgeButtonandroid:width="wrap_content"android:height="match_parent"android:backgroup="@drawable/button_font"/>

imagebutton还可以实现更复杂的效果,例如渐变
drawable/button_color.xml

<?xmlversion="1.0"encoding="utf-8"?><selectorxmlns:android="http://schemas.android.com/apk/res/android">//定义当button处于pressed状态时的形态。<itemandroid:state_pressed="true"><shape><gradientandroid:startColor="#8600ff"/><strokeandroid:width="2dp"android:color="#000000"/><cornersandroid:radius="5dp"/><paddingandroid:left="10dp"android:top="10dp"android:bottom="10dp"android:right="10dp"/></shape></item>//定义当button获得focus时的形态<itemandroid:state_focused="true"><shape><gradientandroid:startColor="#eac100"/><strokeandroid:width="2dp"android:color="#333333"color="#ffffff"/><cornersandroid:radius="8dp"/><paddingandroid:left="10dp"android:top="10dp"android:bottom="10dp"android:right="10dp"/></shape></item></selector>

ImageView:

iamgeview是用于在界面上展示的一个控件 ,通过他可以让我们的程序界面变得更加的丰富。显示图片的资源来源任何地方都可以。

<Imageviewandroid:id="@+id/img"android:layout_width="wrap_content"android:layout_height="match_parent"android:src="drawavle/显示的图片"/>

我们还可以在程序中通过代码动态更改imageview中的图片,例如图片jelly_bean.png 将他复制到res/drawable_hdpi目录下,然后修改MainActivity的代码,这里写主要的代码

ImageView img=(ImageView)findViewById(R.id.img);

获取drawableres/drawable_hdpi目录下的资源

img.setImageResource(R.drawable.jelly_bean);

ProgressBar:

用于在界面上显示一个进度条,表示我们的程序正在加载一些数据。

<ProgressBarandroid:id="@+id/progressbar"android:layout_width="wrap_content"android:layout_height="match_parent"/>

启动程序时 会看到有一个圆形进度条正在旋转。那么怎么样取消呢 这里要用到android:visibility进行指定,可选值有三个,visible、invisible、gone 。visible表示是可见的 默认的 invisible表示不可见 但它任然占据着原来的位置和大小。可以理解控件成透明状态了。gone 表示不可见 而且不占据着原来的位置和大小。

ProgressBar progress=(ProgressBar)findViewById(R.id.progressbar);

通过一个按钮 来控制progressbar是否显示或不显示

button.setOnClickListener(newOnClickListener){publicvoidonClick(Viewv){if(progress.getVisibility()==View.GONE){progress.setVisibility(View.VISIBLE);}else{progress.setVisibility(View.GONE);}}

另外 我们还可以给progressBar指定不同的样式,刚刚是圆形进度条,通过style属性可以将他指定成水平进度条,修改xml布局中的代码 添加一行代码 style="?android:attr/progressBarStyleHorizontal"

Spinner:

下拉列表(Spinner)是一个每次只能选择所有项中一项的部件。它的项来自于与之相关联的适配器中。

1、建一个新的项目,打开res/values/strings.xml文件,写入如下代码:

<?xmlversion="1.0"encoding="utf-8"?><resources><stringname="app_name">MainHelloSpinner</string><stringname="color">选择色彩:</string><stringname="colors"array=""><ITEM></ITEM>黑色|Black</ITEM><ITEM>蓝色|Blue</ITEM><ITEM>棕色|Brown</ITEM><ITEM>绿色|Green</ITEM><ITEM>灰色|Grey</ITEM><ITEM>粉色|Pink</ITEM><ITEM>紫色|Purple</ITEM><ITEM>红色|Red</ITEM><ITEM>白色|White</ITEM><ITEM>黄色|Yellow</ITEM></string></resources>

2、打开res/layout/main.xml 写入如下内容:

<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="vertical"android:padding="10dip"><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_marginTop="10dip"android:text="@string/color"/><Spinnerandroid:id="@+id/spinner"android:layout_width="fill_parent"android:layout_height="wrap_content"android:prompt="@string/color"/></LinearLayout>

3、打开MainHelloSpinner.java 写入下内容:

packageandroid.basic.lesson10;importandroid.app.Activity;importandroid.os.Bundle;importandroid.view.View;importandroid.widget.AdapterView;importandroid.widget.AdapterView.OnItemSelectedListener;importandroid.widget.ArrayAdapter;importandroid.widget.Spinner;importandroid.widget.Toast;publicclassMainHelloSpinnerextendsActivity{/**Calledwhentheactivityisfirstcreated.*/@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);//找到Xml中定义的下拉列表Spinnerspinner=(Spinner)findViewById(R.id.spinner);//准备一个数组适配器ArrayAdapteradapter=ArrayAdapter.createFromResource(this,R.array.colors,android.R.layout.simple_spinner_item);//设置下拉样式adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);//为下拉列表设置适配器spinner.setAdapter(adapter);//定义子元素选择监听器OnItemSelectedListeneroisl=newOnItemSelectedListener(){@OverridepublicvoidonItemSelected(AdapterView<?>parent,Viewview,intposition,longid){Toast.makeText(MainHelloSpinner.this,"选择的色彩:"+parent.getItemAtPosition(position).toString(),Toast.LENGTH_LONG).show();}@OverridepublicvoidonNothingSelected(AdapterView<?>parent){}};//为下拉列表绑定事件监听器spinner.setOnItemSelectedListener(oisl);}}

效果:

Android Widgets

Android Widgets

WebView:

  WebView是View的一个子类,可以让你在activity中显示网页。

  可以在布局文件中写入WebView:比如下面这个写了一个填满整个屏幕的WebView: 

<?xmlversion="1.0"encoding="utf-8"?><WebViewxmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/webview"android:layout_width="fill_parent"android:layout_height="fill_parent"/>

加载一个网页 使用loadUrl():

WebViewmyWebView=(WebView)findViewById(R.id.webview);myWebView.loadUrl(http://www.example.com);

注意要在manifest中加上访问网络的权限:

<manifest...><uses-permissionandroid:name="android.permission.INTERNET"/>...</manifest>

设置WebView要显示的网页
  设置WevView要显示的网页方法有很多:

  互联网页面直接用: 

myWebView.loadUrl(“http://www.google.com“);

本地文件用:

myWebView.loadUrl(“file:///android_asset/XX.html“);

 本地文件存放在:assets文件中。

  还可以直接载入html的字符串,如:

StringhtmlString="<h1>Title</h1><p>ThisisHTMLtext<br/><i>Formattedinitalics</i><br/>AnothorLine</p>";//载入这个html页面myWebView.loadData(htmlString,"text/html","utf-8");

在WebView中使用JavaScript
  如果你想要载入的页面中用了JavaScript,你必须为你的WebView使能JavaScript。

  一旦使能之后,你也可以自己创建接口在你的应用和JavaScript代码间进行交互。

使能JavaScript

  可以通过getSettings()获得WebSettings,然后用setJavaScriptEnabled()使能JavaScript:

WebViewmyWebView=(WebView)findViewById(R.id.webview);WebSettingswebSettings=myWebView.getSettings();webSettings.setJavaScriptEnabled(true);

  WebSettings中提供了很多有用的设置。


处理页面浏览
  当用户点击了你的WebView中的一个链接,默认的行为是Android启动一个处理URL的应用,通常,默认的浏览器打开并下载目标URL。

  但是,你可以在你的WebView中覆盖这一行为,使得连接仍在你的WebView中打开。

  之后,根据在WebView中维护的网页浏览历史,你可以允许用户向前或向后浏览他们的网页。

在WebView中打开所有链接

  要打开用户点击的链接,只需要用setWebViewClient()方法向你的WebView提供一个WebViewClient 比如:

WebViewmyWebView=(WebView)findViewById(R.id.webview);myWebView.setWebViewClient(newWebViewClient());

  此时就OK了, 就可以在你的WebView中打开链接了。

关于打开链接位置的更多控制

  如果你对在哪里打开链接需要更多的控制,你可以创建自己的类,继承 WebViewClient,然后覆写 shouldOverrideUrlLoading() 方法。

  比如下面这个:

privateclassMyWebViewClientextendsWebViewClient{@OverridepublicbooleanshouldOverrideUrlLoading(WebViewview,Stringurl){       if(Uri.parse(url).getHost().equals(www.example.com)){//Thisismywebsite,sodonotoverride;letmyWebViewload//thepagereturnfalse;}//Otherwise,thelinkisnotforapageonmysite,solaunch//anotherActivitythathandlesURLsIntentintent=newIntent(Intent.ACTION_VIEW,Uri.parse(url));startActivity(intent);returntrue;}}

将特定的链接用自己的WebView打开,其他链接用浏览器(intent启动了默认的处理URL的Activity)。

  定义完之后把这个类的对象传入setWebViewClient()方法即可。 

WebViewmyWebView=(WebView)findViewById(R.id.webview);myWebView.setWebViewClient(newMyWebViewClient());

  实践验证:在直接设置setWebViewClient(new WebViewClient());时验证正确,即所有链接都是在WebView中打开。

  在设置为自定义的WebViewClient子类对象时,发现链接仍然都是从默认浏览器中打开。

浏览网页历史回退

  当你的WebView覆写了URL载入的行为,它会自动地对访问过的网页积累一个历史,你可以利用 goBack() goForward()方法在这个历史中前进或后退。

  比如说使用后退键进行网页后退:

/***按键响应,在WebView中查看网页时,按返回键的时候按浏览历史退回,如果不做此项处理则整个WebView返回退出*/@OverridepublicbooleanonKeyDown(intkeyCode,KeyEventevent){//CheckifthekeyeventwastheBackbuttonandifthere'shistoryif((keyCode==KeyEvent.KEYCODE_BACK)&&myWebView.canGoBack()){//返回键退回myWebView.goBack();returntrue;}//Ifitwasn'ttheBackkeyorthere'snowebpagehistory,bubbleup//tothedefault//systembehavior(probablyexittheactivity)returnsuper.onKeyDown(keyCode,event);}

  canGoBack() 方法在网页可以后退时返回true。

  类似的,canGoForward()方法可以检查是否有可以前进的历史记录。

  如果你不执行这种检查,一旦 goBack() 和 goForward()方法到达历史记录顶端,它们将什么也不做。

  如果不加这种设置,在用户按下Back键时,如果是WebView显示网页,则会将WebView作为整体返回。

附上整个代码:

WebViewBasicimportandroid.annotation.SuppressLint;importandroid.app.Activity;importandroid.content.Intent;importandroid.net.Uri;importandroid.os.Bundle;importandroid.view.KeyEvent;importandroid.view.Menu;importandroid.webkit.WebSettings;importandroid.webkit.WebView;importandroid.webkit.WebViewClient;@SuppressLint("SetJavaScriptEnabled")publicclassWebActivityextendsActivity{privateWebViewmyWebView=null;@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_web);//打开网页myWebView=(WebView)findViewById(R.id.webview);////myWebView.loadUrl("http://www.cnblogs.com/mengdd/");//博客链接myWebView.loadUrl("http://www.baidu.com/");//百度链接//JavaScript使能(如果要加载的页面中有JS代码,则必须使能JS)WebSettingswebSettings=myWebView.getSettings();webSettings.setJavaScriptEnabled(true);//在WebView中打开链接(默认行为是使用浏览器,设置此项后都用WebView打开)//myWebView.setWebViewClient(newWebViewClient());//这样设置后所有的链接都会在当前WebView中打开//更强的打开链接控制:自己覆写一个WebViewClient类:除了指定链接从WebView打开,其他的链接默认打开myWebView.setWebViewClient(newMyWebViewClient());}@OverridepublicbooleanonCreateOptionsMenu(Menumenu){getMenuInflater().inflate(R.menu.activity_web,menu);returntrue;}/***自定义的WebViewClient类,将特殊链接从WebView打开,其他链接仍然用默认浏览器打开**@author1**/privateclassMyWebViewClientextendsWebViewClient{@OverridepublicbooleanshouldOverrideUrlLoading(WebViewview,Stringurl){if(Uri.parse(url).getHost().equals("http://www.cnblogs.com/mengdd/archive/2013/02/27/2935811.html")||Uri.parse(url).getHost().equals("http://music.baidu.com/")){//Thisismywebsite,sodonotoverride;letmyWebViewload//thepage//这是官网上的例子,但是我点击特定链接的时候仍然是用浏览器而不是用自己的WebView打开,加上下面这句view.loadUrl(url)仍然是用浏览器,无解,不知道哪里出了问题//view.loadUrl(url);returnfalse;}//Otherwise,thelinkisnotforapageonmysite,solaunch//anotherActivitythathandlesURLsIntentintent=newIntent(Intent.ACTION_VIEW,Uri.parse(url));startActivity(intent);returntrue;}}/***按键响应,在WebView中查看网页时,按返回键的时候按浏览历史退回,如果不做此项处理则整个WebView返回退出*/@OverridepublicbooleanonKeyDown(intkeyCode,KeyEventevent){//CheckifthekeyeventwastheBackbuttonandifthere'shistoryif((keyCode==KeyEvent.KEYCODE_BACK)&&myWebView.canGoBack()){//返回键退回myWebView.goBack();returntrue;}//Ifitwasn'ttheBackkeyorthere'snowebpagehistory,bubbleup//tothedefault//systembehavior(probablyexittheactivity)returnsuper.onKeyDown(keyCode,event);}}

OK 到此android widget 中的控件写到这里!

更多相关文章

  1. Android 中自定义控件和属性(attr.xml,declare-styleable,TypedA
  2. 在控件的任意位置显示图片
  3. 自定义SeekBarPreference控件(老外出品,直接在preferences文件中
  4. Android基础控件——ProgressBar自定义的介绍、动画效果实现、附
  5. Android 监听EditText文本输入 EditText监听事和输入事件
  6. Android 多线程更新控件
  7. Android又一个超漂亮的日历控件
  8. Android studio RelativeLayout相对布局(控件相对父控件摆放-左上

随机推荐

  1. Android(安卓)解决 bitmap size exceed v
  2. android 文本增大时背景的改变
  3. android为图片去色,返回灰度图片
  4. Android自定义控件 之 轮播图(ViewPager)重
  5. Android(安卓)ion异步网络和图像加载大大
  6. Android(安卓)用HttpClient 以Post方式提
  7. Android获取全局Context的方法
  8. Android(安卓)adt-bundle开发环境搭建小
  9. java.lang.IllegalAccessError: Class re
  10. Win8 专业版安装Android(安卓)Studio