我知道有很多類似的問題,但建議的解決方案不適用於我的情況。
我的問題是什麼。
我有片段嵌套在活動內。
片段佈局包括ViewPager
。
我的想法是什麼?至於我的應用程序將不支持風景(這可能會導致一些額外的更改),我的ViewPager
正在從網絡加載圖像。圖像可以安靜地大和沉重,所以我寫了服務器端API,它有助於將圖像轉換爲在服務器上所需的大小,並返回調整大小的圖像網址。
這將有助於擺脫OutOfMemory
錯誤。
但問題是我需要在請求中發送ViewPager's
高度和寬度。
我的ID在onViewCreated
獲取ViewPager的高度和寬度,像素內只有一次在片段
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mBannerSlider = (AutoScrollViewPager) view.findViewById(R.id.banner_slider);
mBannerSlider.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener(){
@Override
public void onGlobalLayout() {
mSliderHeight = mBannerSlider.getHeight();
mSliderWidth = mBannerSlider.getWidth();
Toast.makeText(getActivity(),"View " + mSliderHeight + " " + mSliderWidth,Toast.LENGTH_SHORT).show();
}
requestBannerImages(mSliderHeight........);
});
在這裏找到它的問題是,這種方法被稱爲在每一頁上的變化。
當然,我可以使用一些輔助變量來確定它是否是第一次。
此外還有一種方法可以使用此活動的方法將活動的回調發送到片段。
@Override
public void onWindowFocusChanged(boolean hasFocus) {
// TODO Auto-generated method stub
super.onWindowFocusChanged(hasFocus);
//Here you can get the size!
}
什麼是這種方式的最佳解決方案,也許我可以用另一種方式做得更好。
在此先感謝。
編輯
我有很多的看法,我需要得到的尺寸,所以我需要監聽器添加到每個視圖,並且第一次測量之後將其刪除?
謝謝,這個工程。我有很多觀點,我需要獲取高度和寬度,請參閱編輯。 – CROSP