A. android 滑動漸變的TitleBar
首先看下效果
進入頁面後,是一個列表和頂部是一張圖片的布局,滑動列表, TitleBar 隨著上下滑動而"若隱若現"。感覺是不是像 CoordinatorLayout 和 CollapsingToolbarLayout 的效果
其實不太一樣, CoordinatorLayout 和 CollapsingToolbarLayout 的實現效果更多,並且Gradle需要單獨引入Support包
第一個的效果,只要是 ScrollView 、 ListView 、 RecycleView 都可以實現
以ListView為例,首先ListView設置數據,添加Header,然後設置滑動事件
ScrollViewAlphaListener 是自定義的滑動Listener。 setAlphaView 方法分別設置了: 上下文對象 , 頂部圖片 , 根布局 ~
看下ScrollViewAlphaListener的主要內容
ScrollViewAlphaListener 是 implements AbsListView.OnScrollListener,所以必須實現其 onScroll 方法。在 onScroll 方法中根據頂部圖片的位置高度和根布局滑動Y值,算出Alpha值。當然這里也考慮了 狀態欄的高度(ExtendUtils.getStatusBarHeight(mContext))
最後在 ScrollViewAlphaListener 的回調中,處理對應View的漸變效果
這樣就實現了滑動漸變的效果TitleBar了~ ScrollView 和 RecycleView 的實現都是根據頂部圖片和根布局滑動的Y值來計算的,大同小異~
B. 用CSS做iOS和Android樣式適配
在移動端webview渲染的時候,html標簽會被自動加入一個class屬性,會標識不同的設備
如:
所以,可以用來適配一些移動雙端的差異場景,如適配不同高度Titlebar
不同樣式:
使用樣式:
在iOS設備上就會展示80px,Android設備上60px
C. android 上面標題欄該多高
android 上面標題欄的高度設置要根據狀態欄設置保持一致。具體設置如下:
getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);///取得整個視圖部分,注意,如果你要設置標題樣式,這個必須出現在標題樣式之後,否則會出錯
int top = rect.top;////狀態欄的高度,所以rect.height,rect.width分別是系統的高度的寬度
View v = getWindow().findViewById(Window.ID_ANDROID_CONTENT);///獲得根視圖
int top2 = v.getTop();///狀態欄標題欄的總高度,所以標題欄的高度為top2-top
int width = v.getWidth();///視圖的寬度,這個寬度好像總是最大的那個
int height = v.getHeight();////視圖的高度,不包括狀態欄和標題欄
如果只想取得屏幕大小,可以用
Display display = getWindowManager().getDefaultDisplay() ;
display.getWidth();
display.getHeight();代碼見@Overridepublic void onWindowFocusChanged(boolean hasFocus) {
// TODO Auto-generated method stub
super.onWindowFocusChanged(hasFocus);
Rect frame = new Rect();
getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
// 狀態欄高度
int statusBarHeight = frame.top;
View v = getWindow().findViewById(Window.ID_ANDROID_CONTENT);
int contentTop = v.getTop();
// statusBarHeight是上面所求的狀態欄的高度
int titleBarHeight = contentTop - statusBarHeight;
textView = (TextView) findViewById(R.id.textView1);
textView.setText(標題欄的高度 + Integer.toString(titleBarHeight) +
+ 標題欄高度 + statusBarHeight +
+ 視圖的寬度 + v.getWidth()
+
+ 視圖的高度(不包含狀態欄和標題欄) + v.getHeight());
D. android title bar製作
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/title_bg"
android:orientation="horizontal"
android:padding="5dp" >
<Button
android:id="@+id/plateBackButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_back" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_horizontal"
android:text="@string/inv_title" />
<Button
android:id="@+id/plateNewTalkButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/plate_new_talk" />
</LinearLayout>
把報錯的元素改成你自己的就行。
E. uniapp小程序獲取titleBar的高度和寬度
就是小程序上方由膠囊占據的bar,就叫titleBar。
因為我們可以在膠囊左側寫標題和其他一些東西。這些東西要跟膠囊中線對齊。
首先我們要撐起statusBar的高度,也就是最頂部的那個bar。這個bar的高度很容易取得。
uni.().top取得的是膠囊距離視口頂部的距離,減掉statusBar的高度,就是膠囊離statusBar下沿的距離。這個距離乘以2,加上膠囊自身高度,就是titleBar的高度。
見紅色部分。
開發者工具中會有略微錯位,無妨,以真機為准。
我們希望膠囊左側空白區域與膠囊有間距,而且間距最好是等於膠囊到右邊邊線的距離。這個前提下,左側空白區域的寬度怎麼算?
寫成組件就是這樣:
用法:
演示如何使用作用域插槽:
F. 安卓頭部跟ios頭部高度不一致么
不一致,由於安卓設備的碎片化,不同廠商的titlebar的高度不一樣的。
G. 如何更改NSWindow標題欄的高度
當你對一個窗口使用setFrame:時,你需要把標題欄的高度也算進去。從前標題條的高度是16點,在Aqua里,是22個點。由於這個高度不固定,所以你最好這樣計算: - (float) titleBarHeight{ NSRect frame = NSMakeRect (0, 0, 100, 100); NSRect contentRect; contentRect = [: frame styleMask: NSTitledWindowMask]; return (frame.size.height - contentRect.size.height); }
H. android中怎麼計算標題欄高度
1、獲取標題欄高度:
getWindow().findViewById(Window.ID_ANDROID_CONTENT)這個方法獲取到的view就是程序不包括標題欄的部分,然後就可以知道標題欄的高度了。
java">intcontentTop=getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop();
//statusBarHeight是上面所求的狀態欄的高度
inttitleBarHeight=contentTop-statusBarHeight
擴展:
1、獲取狀態欄高度:
decorView是window中的最頂層view,可以從window中獲取到decorView,然後decorView有個getWindowVisibleDisplayFrame方法可以獲取到程序顯示的區域,包括標題欄,但不包括狀態欄。於是,我們就可以算出狀態欄的高度了。
Rectframe=newRect();
getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
intstatusBarHeight=frame.top;
2、獲取屏幕高度
方法1:
WindowManagerwindowManager=getWindowManager();
Displaydisplay=windowManager.getDefaultDisplay();
screenWidth=display.getWidth();
screenHeight=display.getHeight();
方法2:
DisplayMetricsdm=newDisplayMetrics();
this.getWindowManager().getDefaultDisplay().getMetrics(dm);//this指當前activity
screenWidth=dm.widthPixels;
screenHeight=dm.heightPixels;
I. 如何修改android標題欄界面
方法一、在你的那張Activity中onCreate方法中加上下面代碼:
?
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.main); //軟體activity的布局
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.titlebar); //titlebar為自己標題欄的布局
但是新的問題又來了,這樣是無法深層的定製標題欄的,比如原有的高度和背景都沒有發生變化,那有沒有好的方法呢?答案是有的、
方法二:
因此先定義一個style,若修改背景請修改android:windowTitleBackgroundStyle
若修改標題欄高度,請修改android:windowTitleSize
例子:
?
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="schemas.android.com/apk/res/android">
<style name="CustomWindowTitleBackground">
<item name="android:background">#565656</item>
</style>
<style name="test" parent="android:Theme">
<item name="android:windowTitleSize">50dp</item>
<item name="android:windowTitleBackgroundStyle">@style/CustomWindowTitleBackground</item>
</style>
</resources>
在程序的android_manifest.xml中對應activity中添加屬性android:theme = "@style/test" 就可以了
?
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="schemas.android.com/apk/res/android"
package="com.guardian"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name" >
<activity android:name=".Test"
android:label="@string/app_name"
android:theme = "@style/test" //就在這里
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="4" />
</manifest>
J. 怎麼自定義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值。
按照以上的步驟,修改標題欄布局、高度、背景色的功能就實現了。