2014-01-17 90 views
0

如何在當前活動中獲取視圖(屬於另一個活動)的視圖的高度和寬度。例如, 。在活動中有一個按鈕,我必須藉助它的id來獲取活動二中的teh按鈕的屬性。 (我考慮過視圖,因爲它可以是ImageView,TextView,WebView或其他任何東西)。如何獲取視圖的高度和寬度?

在這裏,我粘貼我試過的代碼。

公共類SecAct延伸活動{

​​

}

我能夠得到的價值,但我不能得到V的屬性(查看),即,高度,寬度或ID等我得到一個空指針異常。

+0

究竟是哪裏** NPE ** ??電話號碼?? –

+0

爲什麼你需要從上一次活動中獲得視圖的高度? –

+0

'視圖v'必須爲'null'。檢查 – R9J

回答

1

首先從視圖的活動範圍內,例如:寬度和高度

Context context = FIRST_ACTIVITY.con; 
Activity firstActivy = (Activity) context; 
ViewGroup firstActivityView = firstActivy.getWindow().getDecorView().findViewById(android.R.id.content); 
View DISIRED_VIEW = firstActivityView.findViewById(R.id.DISIRED_VIEW_ID); 

最後,得到:

public static Context con; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_one); 
    con = this; 
} 

然後,在另一個活動:

int width = DISIRED_VIEW.getWidth(); 
int height = DISIRED_VIEW .getHeight(); 

也許這些值(寬度和高度)可以是0,所以你必須這樣做:

final int width, height; 
DISIRED_VIEW.post(new Runnable() { 

    @Override 
    public void run() { 
     width = DISIRED_VIEW.getWidth(); 
     height = DISIRED_VIEW.getHeight(); 
    } 
}); 
+0

工程就像一個魔術。非常感謝老闆。 –

0

嘗試getMeasuredHeight()方法

+0

@Kuni是的,我也試過,但它顯示空指針異常。 –

+0

@BaradwajAryasomayajula檢查類似的問題[鏈接](http://stackoverflow.com/questions/4142090/how-do-you-to-retrieve-dimensions-of-a-view-getheight-and-getwidth-always-r ) 它可以幫助你解決你的問題 – Kunu

0

你得到空指針異常東陽你尚未初始化的ArrayList butList1。初始化它並添加項目,然後使用它。像這個 -

butList1 = new ArrayList<Integer>(); 
butList1.add(findviewById(R.id.button_id)); 
+0

我想沒有必要初始化butList1和我在createwidgets()函數中初始化它的任何方式。所以我認爲這不是錯誤。 –