當前位置:首頁 » 安卓系統 » androidtitlebar自定義

androidtitlebar自定義

發布時間: 2024-09-25 01:11:23

① 怎麼自定義Android標題欄修改TitleBar的布局

Android程序默認的Activity標題欄只能顯示一段文字,而且不能改變它的布局、顏色、標題欄的高度等。如果想要在標題欄加上個圖標、button、輸入框、進度條、修改標題欄顏色等,只能使用自定義的標題欄。自定義標題欄可以通過在onCreate函數中添加以下代碼來實現,需要注意的是代碼的順序必須按照下面的樣式,否則將無效。
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.mainactivity); //Activity的布局
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.titlebar); //標題欄的布局
雖然上面這樣可以在標題欄加入一些控制項,但是仍然不能改變標題欄的高度、背景色,要想達到這個目的,只能使用theme(主題)。因此往project里先添加一個style。改變背景色修改android:windowTitleBackgroundStyle的值,改變標題欄高度則修改android:windowTitleSize的值。下面是一個示例:






接著再修改AndroidManifest.xml文件,找到要自定義標題欄的Activity,添加上android:theme值,比如:

java代碼
android:theme值就是上面那個style.xml文件里定義的一個style的name值。

按照以上的步驟,修改標題欄布局、高度、背景色的功能就實現了。

② 如何在Android中實現分享功能

分享功能有很多可以使用別人開發好的SDK,還有一種最簡單的方法是titlebar上顯示分享,也就是在menu下添加如下代碼能實現分享功能:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_share"
android:actionProviderClass="android.widget.ShareActionProvider"
android:showAsAction="ifRoom"
android:title="分享"/>
</menu>

③ Android去除狀態欄的方法匯總

一、隱藏標題欄

//隱藏標題欄

this.requestWindowFeature(Window.FEATURE_NO_TITLE);

二、隱藏狀態欄

//隱藏狀態欄

this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

三、去掉所有Activity界面的標題欄

修改AndroidManifest.xml

在application 標簽中添加android:theme="@android:style/Theme.NoTitleBar"

四、去掉所有Activity界面的TitleBar 和StatusBar

修改AndroidManifest.xml

在application 標簽中添加

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

④ android標題欄高度是多少

1、獲取標題欄高度: getWindow().findViewById(Window.ID_ANDROID_CONTENT)這個方法獲取到的view就是程序不包括標題欄的部分,然後就可以知道標題欄的高度了。

1
2
3

int contentTop = getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop();
//statusBarHeight是上面所求的狀態欄的高度
int titleBarHeight = contentTop - statusBarHeight

擴展:
1、獲取狀態欄高度:
decorView是window中的最頂層view,可以從window中獲取到decorView,然後decorView有個getWindowVisibleDisplayFrame方法可以獲取到程序顯示的區域,包括標題欄,但不包括狀態欄。於是,我們就可以算出狀態欄的高度了。

1
2
3

Rect frame = new Rect();
getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
int statusBarHeight = frame.top;

2、獲取屏幕高度

1
2
3
4
5

方法1:
WindowManager windowManager = getWindowManager();
Display display = windowManager.getDefaultDisplay();
screenWidth = display.getWidth();
screenHeight = display.getHeight();

1
2
3
4
5

方法2:
DisplayMetrics dm = new DisplayMetrics();
this.getWindowManager().getDefaultDisplay().getMetrics(dm);//this指當前activity
screenWidth =dm.widthPixels;
screenHeight =dm.heightPixels;

⑤ android中include和merge標記的區別和使用

include和merge標記的作用主要是為了解決layout的重用問題。
比如我們有三四個Activity但是他們都要用到同一個樣式的標題欄,雖然我們把一樣的代碼個三四遍也沒關系,但實在是太丑了,而且效率太低,如果這個標題欄要改樣式,你豈不是要去三四個地方分別改動。
為了解決這個問題,android中有了include和merge標記

以下為標題欄的layout文件titlebar.xml 我們將使用Include標記重用這個文件
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width=」match_parent」
android:layout_height="wrap_content"
android:background="@color/titlebar_bg">
<ImageView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/gafricalogo" />
</FrameLayout>
那麼在那三四個activity中你可以適用Include標記
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width=」match_parent」
android:layout_height=」match_parent」
android:gravity="center_horizontal">
<include layout="@layout/titlebar"/>
<TextView android:layout_width=」match_parent」
android:layout_height="wrap_content"
android:text="@string/hello" />
...
</LinearLayout>
調用了Include之後,titlebar文件的內容就被完全嵌入到了include所指定的位置。而且你還可以在include中重新更改一些屬性的值,比如
<include android:id=」@+id/news_title」
android:layout_width=」match_parent」
android:layout_height=」match_parent」
layout="@layout/title"/>
原來layout中的wrap_content屬性就被改成了match_parent屬性

再來說一下merge標記
上面的include有一個副作用就是他多套了一層root節點FrameLayout ,使得再構圖的時候會多花費一點時間
如果你不能容忍這個的話那你可以試一下merge標記
titlebar2.xml
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/gafricalogo" />
</merge>
這樣行成的titlebar2文件就少了外層的root節點,merge標記可以直接成為root節點,當titlebar2被include到文件中時,merge標記就會被忽略掉,而直接由裡面的ImageView取代原來include的位置。避免了冗餘的layout。

所以include和merge是配合使用的,不是一個互斥的或者說是平級的關系。

再來說一個在使用這兩個標簽時最容易出現的問題。
經常會有同學在RelativeLayout中使用include標簽
但是卻發現include進來的控制項無法用layout_alignParentBottom="true"之類的標簽來調整。這個真的非常惱火。其實解決方法非常簡單,只要你在include的時候同時重載下layout_width和layout_height這兩個標簽就可以了。如果不重載,任何針對include的layout調整都是無效的!

⑥ android 多個頁面怎麼共用同一組件

自定義組件就行。如果覺得還不好就創建一個mole。

關於自定義組件的實例,請參考android學習手冊,android學習手冊包含9個章節,108個例子,源碼文檔隨便看,例子都是可交互,可運行,源碼採用android studio目錄結構,高亮顯示代碼,文檔都採用文檔結構圖顯示,可以快速定位。360手機助手中下載,圖標上有貝殼

.多個Activity共用相同布局或者相同控制項:避免重復代碼;

BaseActivit代碼:

{

/*

* 多個Activity共用相同布局或者相同控制項

* 寫個基類繼承,避免重復代碼

*/

@Override

publicvoidonClick(View v)

{

switch(v.getId())

{

caseR.id.common_titlebar_btn_back:

finish();

break;

default:

break;

}

baseOnClick(v);

}

protectedvoidbaseOnClick(View v)

{

}

@Override

protectedvoidonCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

// setContentView(R.layout.activity_base);

}

@Override

protectedvoidonResume()

{

super.onResume();

onPostOnCreate();

}

publicfinalvoidonPostOnCreate()//find同一個控制項

{

findViewById(R.id.common_titlebar_btn_back).setOnClickListener(this);

}

@Override

(Menu menu)

{

getMenuInflater().inflate(R.menu.base, menu);

returntrue;

}

}


子類代碼:


{

/**

* layout里復用同一布局:

* < include

* android:id="@+id/include1"

* layout="@layout/common_titlebar" />

*/

@Override

protectedvoidonCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_third_main);

}

}

⑦ Android開發問題怎麼解決

  1. R.java消失或解析異常

  2. 自定義title欄

  3. SQLite isFirst和isBeforeFirst方法的區別

  4. eclipse刪除空行

  5. getX()和getRawX()的區別

  6. imagView居中顯示問題

  7. synchronized引發了 java.util.

  8. 獲取隨機顏色

  9. 去掉Activity的標題欄,全屏顯示

  10. 如何修改應用名稱及應用圖標

  11. 關於調試方法

  12. Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.

  13. android.content.res.Resources.loadXmlResourceParser

  14. android.content.res.Resources$NotFoundException

  15. 交互性的button定義的方法

  16. 在超級終端中執行程序報錯-Permission deny

  17. 從svn導入工程項目有驚嘆號

  18. 從svn導入工程項目有驚嘆號

  19. 首次進入帶有EditText的Activity不自動彈出軟鍵盤,再次點擊才彈

  20. Gallery中OnItemClickListener與OnItemSelectedListener的區別

  21. Eclipse中簽名導出apk崩潰,手動簽名

  22. android.view.InflateException: Binary XML file line #異常的解決

  23. 將assets文件夾中的壓縮包拷貝到sdcard中(不限大小)

  24. 判斷是否有root許可權

  25. 最簡單的Root 模擬器的方法

  26. 新版ADT開啟eclipse提示 "Running Android Lint" has encountered a problem

  27. 新版ADT開啟eclipse提示cannot open libstdc++.so.6..

  28. 無法升級ADT

熱點內容
javaurl的正則表達式 發布:2024-11-24 15:53:45 瀏覽:245
c語言只可以執行編譯文件 發布:2024-11-24 15:53:33 瀏覽:756
126郵件伺服器地址 發布:2024-11-24 15:52:46 瀏覽:214
微信80安卓什麼時候更新動態 發布:2024-11-24 15:40:54 瀏覽:480
破天窩窩腳本 發布:2024-11-24 15:40:53 瀏覽:112
王者榮耀蘋果轉安卓怎麼轉的 發布:2024-11-24 15:40:49 瀏覽:677
取消win10開機密碼怎麼設置 發布:2024-11-24 15:26:03 瀏覽:796
編譯原理for循環三地址碼 發布:2024-11-24 15:16:44 瀏覽:201
php2048 發布:2024-11-24 15:14:49 瀏覽:894
php旋轉圖片 發布:2024-11-24 15:03:48 瀏覽:534