如何把定制的UI布局放到Activity主窗口的标题中

长平狐 发布于 2012/10/16 10:18
阅读 209
收藏 0

本例演示如何把一个自定义的UI布局放到的Activity主窗口的布局中,并替换默认的标题。

1. 定义清单文件(AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

      package="my.android.test"

      android:versionCode="1"

      android:versionName="1.0">

    <application android:icon="@drawable/icon" android:label="@string/app_name">

        <!-- android:windowSoftInputMode属性设置Activity主窗口与软键盘的交互模式

             stateVisible:软键盘在适当的时候是可见的,通常是在用户用户进入Activity主窗口,准备输入的时候

             adjustPanActivity主窗口不会针对软键盘调整尺寸,而是在软键盘遮挡住当前输入域时,自动的平移

             Activity窗口的内容,以便用户能够看到输入域。

        -->

        <activity android:name=".CustomTitle"

                  android:label="@string/app_name"

                  android:windowSoftInputMode="stateVisible|adjustPan">

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

 

    </application>

    <uses-sdk android:minSdkVersion="9" />

</manifest>

2. 定义字符串资源(strings.xml

<?xml version="1.0" encoding="utf-8"?>

<resources>

    <string name="hello">Hello World, CustomTitle!</string>

    <string name="app_name">CustomTitle</string>

    <string name="custom_title_left">Left is best</string>

    <string name="custom_title_right">Right is always right</string>

    <string name="custom_title_left_button">Change Left</string>

    <string name="custom_title_right_button">Change Right</string>

</resources>

3. 定义Activity的主窗口布局(custom_title.xml

<?xml version="1.0" encoding="utf-8"?>

<!-- Activity主窗口布局,含有两个文本输入域和两个按钮 -->

<LinearLayout 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">

    <!-- android:baselineAligned=false防止布局跟它的子对象的基线对齐 -->

    <LinearLayout android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:baselineAligned="false">

        <!-- android:maxEms设定最大的字符宽度

             android:minEms设定最小的字符宽度

             android:layout_gravity设置布局的重心

        -->

        <EditText android:id="@+id/left_text_edit"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:maxEms="10"

            android:minEms="10"

            android:layout_gravity="center_vertical"

            android:text="@string/custom_title_left" />

        <Button android:id="@+id/left_text_button"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_gravity="center_vertical"

            android:text="@string/custom_title_left_button"/>

    </LinearLayout>

    <LinearLayout android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:baselineAligned="false">

        <EditText android:id="@+id/right_text_edit"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:maxEms="10"

            android:minEms="10"

            android:layout_gravity="center_vertical"

            android:text="@string/custom_title_right" />

        <Button android:id="@+id/right_text_button"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_gravity="center_vertical"

            android:text="@string/custom_title_right_button"/>

    </LinearLayout>

</LinearLayout>

4. 定义窗口标题的布局(custom_title_1.xml

<?xml version="1.0" encoding="utf-8"?>

<!-- 使用这个布局替代默认的Activity窗口标题 -->

<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">

    <!-- 居左显示文本。android:layout-alignParentLeft="true" -->

    <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" />

    <!-- 居右显示文本。android:layout-alignParentRight="true" -->

    <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>

5. 创建Activity类(CustomTitle.java

package my.android.test;

 

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.view.Window;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

import android.widget.TextView;

 

publicclass CustomTitle extends Activity {

    /** Activiy首次创建时,调用这个方法*/

    @Override

    publicvoid onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        //请求修改窗口的标题

        requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);

        //填充布局

        setContentView(R.layout.custom_title);

        //用自定义的布局替换默认的Activity主窗口的布局

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

        //获取自定义标题中左侧的文本View对象

        final TextView leftText = (TextView)findViewById(R.id.left_text);

        //获取自定义标题中右侧的文本View对象

        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按钮的Click点击事件监听器

        leftButton.setOnClickListener(new OnClickListener() {

        publicvoid onClick(View v){

             leftText.setText(leftTextEdit.getText());

        }

        });

        //设置rightButton按钮的Click点击事件监听器

        rightButton.setOnClickListener(new OnClickListener(){

        publicvoid onClick(View v){

             rightText.setText(rightTextEdit.getText());

        }

        });

    }

}


原文链接:http://blog.csdn.net/fireofstar/article/details/7466295
加载中
返回顶部
顶部