編輯:關於Android編程
當超出屏幕後,getMeasuredHeight()等於getHeight()加上屏幕之外沒有顯示的大小
我們知道在oncreate中View.getWidth和View.getHeight無法獲得一個view的高度和寬度,這是因為View組件 布局要在onResume回調後完成。
下面說三種方式
使用 getViewTreeObserver().addOnGlobalLayoutListener()來獲得寬度或者高度。
OnGlobalLayoutListener 是ViewTreeObserver的內部類,當一個視圖樹的布局發生改變時,可以被ViewTreeObserver監聽到,這是一個注冊監聽視圖樹的觀察者(observer),在視圖樹的全局事件改變時得到通知。ViewTreeObserver不能直接實例化,而是通過getViewTreeObserver()獲得。private int mHeaderViewHeight; private View mHeaderView; ..... mHeaderView.getViewTreeObserver().addOnGlobalLayoutListener( new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { mHeaderViewHeight = mHeaderView.getHeight(); mHeaderView.getViewTreeObserver() .removeGlobalOnLayoutListener(this); } });
但是需要注意的是OnGlobalLayoutListener可能會被多次觸發,因此在得到了高度之後,要將OnGlobalLayoutListener注銷掉。
還可以在VIew的post方法中獲取
public class TestHeight extends Activity { TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_activity_b); tv = (TextView) findViewById(R.id.textView); tv.post(new Runnable() { @Override public void run() { int height= tv.getHeight(); } }); } }
int intw=View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); int inth=View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); textView.measure(intw, inth); int intwidth = textView.getMeasuredWidth(); int intheight = textView.getMeasuredHeight();
Fragment必須是依存於Activity而存在的,因此Activity的生命周期會直接影響到Fragment的生命周期。官網這張圖很好的說明了倆者的關系:可以看到Fr
相關概念1.Handler:可以看做是一個工具類,用來向消息隊列中插入消息的;2.Thread:所有與Handler相關的功能都是與Thread密不可分的,Handler
自定義View通訊錄字母快速索引在Android日常開發中,我們經常在聯系人界面看到一些字母導航欄,點擊字母的時候,會根據漢字的首拼音來查找是否存在相應的item,這種效
1,android本來就有獲取應用緩存的方法,只是用起來有點麻煩。但我們的應用有時需要讓用戶知道緩存的大小,讓用戶及時清理緩存。直接上代碼,demo使用android s