您的位置:首页 > 移动开发 > Android开发

android自定义标题栏progressBar

2010-11-08 14:41 465 查看
如何改变android程序的标题栏呢?

在程序的界面Activity的onCreate()函数中,setContentView(R.id.main)之前设定你的标题的样式。其中

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE)就是用户可以自己设定一个样式的标题栏。当然requestWindowFeature()里面还有其他的样式可以设置,自己可以看下android源码里面Window类里面的参数。

接下来自己到res/layout下面创建一个layout。

附上我的自己的一个layout(custom_test_title.xml)。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/screen" android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
    <TextView android:id="@+id/left_text"
        android:gravity="center_vertical"
        style="?android:attr/windowTitleStyle" mce_style="?android:attr/windowTitleStyle"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent" android:paddingLeft="5dip"
        android:layout_alignParentLeft="true" />
    <TextView android:id="@+id/right_text"
        android:gravity="center_vertical"
        style="?android:attr/windowTitleStyle" mce_style="?android:attr/windowTitleStyle"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent" android:paddingRight="5dip"
        android:layout_alignParentRight="true"
        android:visibility="gone" />
    <LinearLayout android:id="@+id/loading_indicator"
        android:orientation="horizontal"
        android:gravity="center_vertical"
        android:paddingTop="2dip"
        android:layout_alignParentRight="true"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content">
        <TextView android:id="@+id/loading_text"
            android:gravity="center_vertical"
            style="?android:attr/windowTitleStyle" mce_style="?android:attr/windowTitleStyle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingRight="5dip"
            android:layout_alignParentRight="true" />
        <ProgressBar android:id="@android:id/progress"
            style="?android:attr/progressBarStyleSmallTitle" mce_style="?android:attr/progressBarStyleSmallTitle"
            android:gravity="center_vertical"
            android:paddingRight="5dip"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>
</RelativeLayout>


然后在setContentView(R.id.main)之后通过getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_test_title)去取得这个样式。

我这次是在标题栏的右边有个progressBar。用来Loading网页的,因此我一开始不想让progressBar显示出来,那可以用

findViewById(R.id.loading_indicator).setVisibility(View.INVISIBLE)设定当前不显示。(onCreate()中的代码片段)

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
        setContentView(R.layout.main);
        getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_test_title);
        findViewById(R.id.loading_indicator).setVisibility(View.INVISIBLE);




最后就是在你需要调用它的时候调用就行了。贴上一个我取webview的代码

class MyWebViewClient extends WebViewClient {
        
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            findViewById(R.id.loading_indicator).setVisibility(View.VISIBLE);
            super.onPageStarted(view, url, favicon);
        }
        
        @Override
        public void onPageFinished(WebView view, String url) {
            findViewById(R.id.loading_indicator).setVisibility(View.INVISIBLE);
            super.onPageFinished(view, url);
        }
        
    }


我在读取网页开始的时候把标题栏上的progressBar表示出来。然后网页表示完了就把标题栏的progressBar重新给隐藏了。



ps:第一次发博客。还望大家指正
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: