如何改变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:第一次发博客。还望大家指正