android 中 view 的寬度和高度
前言:今天在onCreate 的時候獲取view 的寬度 和 高度,發現結果是0。這就奇怪了,我已經在xml 中配置了高度、寬度了,怎麼會是0呢?度娘給出了答案!但是我還是希望能結合source code來解釋一下原因,所以我跟人小結一下。
首先呢,看一下我試驗的code:
第一次列印是:private void init() { int width = mTestView.getWidth(); int height = mTestView.getHeight(); Log.d(TAG, "====width =" + width + ", ====height =" + height); WindowManager wm = this.getWindowManager(); int window_width = wm.getDefaultDisplay().getWidth(); int window_height = wm.getDefaultDisplay().getHeight(); Log.d(TAG, "====window_width =" + window_width + ", ====window_height =" + window_height); }
D/MainActivity( 2272): ====width =0, ====height =0
改一下:
列印是:private void init() { mTestView.measure(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); int width = mTestView.getMeasuredWidth(); int height = mTestView.getMeasuredHeight(); Log.d(TAG, "====width =" + width + ", ====height =" + height); WindowManager wm = this.getWindowManager(); int window_width = wm.getDefaultDisplay().getWidth(); int window_height = wm.getDefaultDisplay().getHeight(); Log.d(TAG, "====window_width =" + window_width + ", ====window_height =" + window_height); }
D/MainActivity( 2386): ====width =157, ====height =41
通過code,可以看出是主動呼叫了measure 的方法做了一次測量,相當於在原基礎上多了一次測量,好處就是可以立即獲取寬度和高度。
下面來具體總結一下其他方式;
方法一:
int width =View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); int height =View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); view.measure(width,height); int height=view.getMeasuredHeight(); int width=view.getMeasuredWidth();
方法二:
//增加元件繪製之前的監聽
ViewTreeObserver vto =view.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
int height =view.getMeasuredHeight();
int width =view.getMeasuredWidth();
}
});
方法三:
//增加整體佈局監聽
ViewTreeObserver vto = view.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener(){
@Override
public void onGlobalLayout() {
view.getViewTreeObserver().removeGlobalOnLayoutListener(this);
int height =view.getMeasuredHeight();
int width =view.getMeasuredWidth();
}
});
相關推薦
Js 中一系列寬度和高度的學習
頁面 chrome html5 影響 float 20px 我們 一個 完全 在學習元素一系列寬度和高度之前,我們先來看一個平時開發中幾乎不會遇到的問題,那就是html文檔聲明<!DOCTYPE html> 確實會對元素的寬高產生影響。幾乎不會遇到,是因為我
Android 獲取 螢幕寬度和高度——獲取文字高度和寬度
獲得螢幕寬度和高度 //直接在子元件中 1、WindowManager wm = (WindowManager) getContext() .getSystemService(Context.WINDOW_SERVI
Android獲得螢幕寬度和高度
//直接在子元件中 1、WindowManager wm = (WindowManager) getContext() .getSystemService(Context.WINDOW_SERVICE); //目前版本已經
android 中 view 的寬度和高度
請轉載的朋友標明出處~~前言:今天在onCreate 的時候獲取view 的寬度 和 高度,發現結果是0。這就奇怪了,我已經在xml 中配置了高度、寬度了,怎麼會是0呢?度娘給出了答案!但是我還是希望能結合source code來解釋一下原因,所以我跟人小結一下。首先呢,看一
Android中測量Text的寬度和高度
Android中,在自定義View中通過Canvas繪製文字時,經常需要測量文字的寬度和高度。這裡記錄下幾種比較常
android在OnCreate中獲取控制元件的寬度和高度
在Android中,有時需要對控制元件進行測量,得到的控制元件寬度和高度可以用來做一些計算。在需要自適應螢幕的情況下,這種計算就顯得特別重要。另一方便,由於需求的原因,希望一進入介面後,就能得到控制元件的寬度和高度。 可惜的是,根據我的驗證,利用網上轉載的那些方法在OnCr
android開發中如何通過程式碼設定控制元件的寬度和高度
原理:通過控制元件的setLayoutParams(params)來設定。而params的型別主要是根據該控制元件的父控制元件的型別來定義的。例如,1、main.xml檔案內容如下:<LinearLayout xmlns:android="http://schemas.
Android獲取View的寬度和高度
前言:可能很多情況下,我們都會有在activity中獲取view 的尺寸大小(寬度和高度)的需求。面對這種情況,很多同學立馬反應:這麼簡單的問題,還用你說?你是不是傻。。然後立馬寫下getWidth()
Android中豎線隨內容高度變化而變化的問題和解決辦法
專案中要求顯示豎線,並且豎線高度不確定,豎線的高度要隨著內容的變化而變化。不能使用match_parent 充滿,也不能在佈局中寫死,此時使用 android:layout_height="wrap_content" 將不起作用,反而會充滿整個螢幕。我在網上搜索了一番,關於這個問題只找到了這樣一篇文章 h
CSS將邊框border設定到寬度和高度中
今天偶遇一個css方面的問題,因為以前也為該問題苦惱過,今天得到了解決方案,而且答案很簡單,就是給css加上一個屬性就搞定了,由於該屬性平時很少用,為了方便以後檢視,特此記錄。 要實現的效果圖 我們想實現如下效果: 一般做法 那麼我們如何
Android中View和ViewGroup的詳細解釋:
Android中View和ViewGroup的詳細解釋 1. 概述: Android系統中的所有UI類都是建立在View和ViewGroup這兩個類的基礎上的。所有View的子類成為”Widget”,所有ViewGroup的子類成為”Layout
Android中View和ViewGroup事件分發攔截機制完美分析
出自:http://www.cnblogs.com/linjzong/p/4191891.html Touch事件分發中只有兩個主角:ViewGroup和View。Activity的Touch事件事實上是呼叫它內部的ViewGroup的Touch事件,可以直接當成Vie
Web前端Table中的tr和td按百分比設定寬度和高度,當內容超出時Table變型解決
如果table按照百分比設定寬度和高度,當表格內部任意內容超出所在元素的百分比值時就會使得表格變形。 <table width='80%'> <tr> <td width='50%'>內容超過50%</td> </tr> </table>
Android獲取螢幕的寬度和高度(dp)
一般我們需要的寬度和高度都是需要dp格式,但是在網上找了一大堆的資料基本上得到的寬度和高度都是畫素(Pixels)型的寬度和高度,與我們所需要的不一樣,後面經過查詢資料終於找到解決辦法,下面上程式碼,老鳥勿噴 public void getAndroiodScr
安卓中動態設定控制元件的寬度和高度
我們做專案的時候 需要動態設定控制元件的高度,因此該功能是很重要的,下面我介紹一下動態設定控制元件的高度。 LinearLayout.LayoutParams linearParams = (LinearLayout.LayoutParams) password_l
【Android View】Android中View對觸控事件的處理和傳遞dispatchTouchEvent、onInterceptTouchEvent
View中存在dispatchTouchEvent、onTouchEvent兩個方法。 而ViewGroup中則存在dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent三個方法。 呼叫順序依次為dispatchTouch
解決 Android 中 View 的 setPivotX 和 setPivotY 不生效的問題以及設定縮放中心的方法
背景是這樣的:有一個需求要對下方的關注按鈕實現如下動畫,動畫的最後要根據滑動位置對關注按鈕進行縮放,縮放結束時整體大小為控制元件原始大小的90%,最終效果圖如下所示(模擬器是 4.2 的系統,最上面的沉浸式有點問題,忽略之): 如圖,關注按鈕向上滑
JavaScript與jQuery中獲取螢幕的寬度和高度的常用方法以及HTML中精確定位
瀏覽器的寬高示意圖: JavaScript中常用的方法: 網頁可見區域寬: document.body.clientWidth 網頁可見區域高: document.body.clientHe
CODEVS 1501二叉樹最大寬度和高度
它的 logs nbsp 二叉 ace 最小寬度 最大 -h blog 題目描述 Description 給出一個二叉樹,輸出它的最大寬度和高度。 輸入描述 Input Description 第一行一個整數n。 下面n行每行有兩個數,對於第i行的兩個數
android 中View, Window, Activity, WindowManager,ViewRoot幾者之間的關系
line 消息傳遞 post att 顯示 增加 調用 eas window對象 (1)View:最主要的UI組件,表示屏幕上的一個矩形區域。 (2)Window: 表示一個窗體,不一定有屏幕那麽大,能夠非常大也能夠非常小;