Android ApiDemos详解之App/Activity/Custom Title(1)

来源:互联网 发布:centos cp 文件夹 编辑:程序博客网 时间:2024/05/30 23:29

转载:http://blog.csdn.net/heraclesapollo/article/details/7081535


Android ApiDemos详解之App->Activity->Custom Title

     开始之前需要先给大家解释一下,前两篇文章所用的都是2.3.3,但为了紧跟潮流,从这篇文章开始,SDK版本一致采用4.0,OK继续。

先来看看该例实现的功能:

(1).点击Custom Title


(2).该例子的布局包括如下两排控件,每一排都是由左边的一个EditText和右边的一个Button组成。功能为:点击”B2”,则将”A1”处文字改变为”B1”内的内容;同样,点击”C2”,则将”A2”处文字改变为”C1”内的内容。


看完该示例的功能图后先来分析一下Custom Title(继承Activity)内的主要代码:

[java] view plaincopy
  1. public class CustomTitleextends Activity {  
  2.     @Override  
  3.     protected void onCreate(Bundle savedInstanceState) {  
  4.         super.onCreate(savedInstanceState);  
  5.    
  6.         requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);  
  7.         setContentView(R.layout.custom_title);  
  8.         getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title_1);    
  9.         final TextView leftText = (TextView)findViewById(R.id.left_text);  
  10.         final TextView rightText = (TextView)findViewById(R.id.right_text);  
  11.         final EditText leftTextEdit = (EditText)findViewById(R.id.left_text_edit);  
  12.         final EditText rightTextEdit = (EditText)findViewById(R.id.right_text_edit);  
  13.         Button leftButton = (Button)findViewById(R.id.left_text_button);  
  14.         Button rightButton = (Button)findViewById(R.id.right_text_button);  
  15.          
  16.         leftButton.setOnClickListener(new OnClickListener(){  
  17.             public void onClick(View v) {  
  18.                leftText.setText(leftTextEdit.getText());  
  19.             }  
  20.         });  
  21.         rightButton.setOnClickListener(new OnClickListener(){  
  22.             public void onClick(View v) {  
  23.                rightText.setText(rightTextEdit.getText());  
  24.             }  
  25.         });  
  26.     }  
  27. }  


 

其中在

[java] view plaincopy
  1. setContentView(R.layout.custom_title)  
上有一句

[java] view plaincopy
  1. requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);  
requestWindowFeature(int)是用来设置Android应用程序窗体显示状态,其中int可以为如下选项值:

1.DEFAULT_FEATURES:系统默认状态,一般不需要指定

2.FEATURE_CONTEXT_MENU:启用ContextMenu,默认该项已启用,一般无需指定

3.FEATURE_CUSTOM_TITLE:自定义标题。当需要自定义标题时必须指定。如:标题是一个按钮时

4.FEATURE_INDETERMINATE_PROGRESS:不确定的进度

5.FEATURE_LEFT_ICON:标题栏左侧的图标

6. FEATURE_RIGHT_ICON:标题栏右侧的图标

7.FEATURE_OPTIONS_PANEL:启用“选项面板”功能,默认已启用。

8.FEATURE_PROGRESS:进度指示器功能

9. FEATURE_NO_TITLE:无标题

本例中的Window.FEATURE_CUSTOM_TITLE指的就是“自定义标题”。其中需要注意的是:

[java] view plaincopy
  1. requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);  
  2. setContentView(R.layout.custom_title);  
这两句的顺序不能颠倒,也就是说如果在该Activity已经setContentView(int)之后再去设置窗体显示状态则会导致程序crash.

下面来看

getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.custom_title_1);


这一句是用来设置指定特征的特征值,在本例中则是为自定义窗体设置自定义的窗体布局。R.layout.custom_title_1这一id引用的则是layout/custom_title_1.xml布局文件,内容很简单,就是两个横向排列的TextView,代码如下:

[html] view plaincopy
  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/screen"  
  2.     android:layout_width="match_parent" android:layout_height="match_parent"  
  3.     android:orientation="vertical">  
  4.     <TextView android:id="@+id/left_text"  
  5.        android:layout_width="wrap_content"  
  6.        android:layout_height="wrap_content"  
  7.        android:layout_alignParentLeft="true"  
  8.        android:text="@string/custom_title_left" />  
  9.     <TextView android:id="@+id/right_text"  
  10.        android:layout_width="wrap_content"  
  11.        android:layout_height="wrap_content"  
  12.        android:layout_alignParentRight="true"  
  13.        android:text="@string/custom_title_right" />  
  14. </RelativeLayout>  

这里需要解释的一点是,虽然大家看到父容器RelativeLayout的android:orientation属性设置的值是”vertical”也即就是垂直排布元素,但是该容器内的两个TextView分别设置了android:layout_alignParentLeft="true"和android:layout_alignParentRight="true",因而也就分属于父容器的左右两侧了。

而在代码中的leftText和rightText这两个TextView,就是分别映射对应着上述布局文件中的左右两个TextView。

剩下的代码就非常简单了,两个按钮注册监听器,点击Change Left按钮,通过leftTextEdit.getText()方法获取EditText内的内容,并用leftText.setText()方法填充到窗体左边的显示状态上;点击ChageRight道理相同。


原创粉丝点击