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

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)内的主要代码:

public class CustomTitleextends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
        setContentView(R.layout.custom_title);
        getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title_1);  
        final TextView leftText = (TextView)findViewById(R.id.left_text);
        final TextView rightText = (TextView)findViewById(R.id.right_text);
        final EditText leftTextEdit = (EditText)findViewById(R.id.left_text_edit);
        final EditText rightTextEdit = (EditText)findViewById(R.id.right_text_edit);
        Button leftButton = (Button)findViewById(R.id.left_text_button);
        Button rightButton = (Button)findViewById(R.id.right_text_button);
       
        leftButton.setOnClickListener(new OnClickListener(){
            public void onClick(View v) {
               leftText.setText(leftTextEdit.getText());
            }
        });
        rightButton.setOnClickListener(new OnClickListener(){
            public void onClick(View v) {
               rightText.setText(rightTextEdit.getText());
            }
        });
    }
}


 

其中在

setContentView(R.layout.custom_title)
上有一句

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指的就是“自定义标题”。其中需要注意的是:

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
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,代码如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/screen"
    android:layout_width="match_parent" android:layout_height="match_parent"
    android:orientation="vertical">
    <TextView android:id="@+id/left_text"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentLeft="true"
       android:text="@string/custom_title_left" />
    <TextView android:id="@+id/right_text"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentRight="true"
       android:text="@string/custom_title_right" />
</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道理相同。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值