我有一個視圖需要檢測它何時被附加到它的父視圖。視圖如何檢測它何時連接到其父項?
在ViewGroup
我有OnHierarchyChangeListener
它允許我知道子視圖何時被添加/刪除,但我需要相反的東西。
我有一個視圖需要檢測它何時被附加到它的父視圖。視圖如何檢測它何時連接到其父項?
在ViewGroup
我有OnHierarchyChangeListener
它允許我知道子視圖何時被添加/刪除,但我需要相反的東西。
您可以創建自定義視圖,做你的東西在其onAttachedToWindow
public class CustomView extends View {
public CustomView(Context context) {
super(context);
}
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
Log.d("CustomView", "onAttachedToWindow called for " + getId());
Toast.makeText(getContext(), "added", 1000).show();
}
}
[編輯1]
你能保證你的customview加改正的ViewGroup要
@Override
protected void onAttachedToWindow() {
// TODO Auto-generated method stub
super.onAttachedToWindow();
if(((View)getParent()).getId()== R.id.relativelayout2)
{
Log.d("CustomView","onAttachedToWindow called for " + getId());
Toast.makeText(context, "added", 1000).show();
}
}
但是,視圖在構建時不會添加到父視圖中!我想知道什麼時候在某個視圖組上調用addView時,將此視圖作爲參數傳遞。 – user940016
對不起,你看,編輯答案。 – Talha
請看我上面的評論。我不確定onAttachedToWindow是否適合我的問題。 – user940016
那麼,你有OnHierarchyChangeListener中的視圖,所以我想你可以添加一個回調到你的視圖(通過繼承他們的接口)並將其稱爲f rom OnHierarchyChangeListener。這樣,您的視圖將在調用OnHierarchyChangeListener的同時被調用。
但是,如果發生這種情況,您的視圖的許多屬性(如尺寸)可能尚未定義,我不會感到驚訝。
但是,這限制了功能,只有父母支持它... – user940016
是的,當然:這不是一個父母的自動過程。 – SylvainL
我想如果你需要這種控制,最好把它做成一個片段。這樣你就可以訪問更加細化的生命週期。
如果您通過實現onViewAdded方法監視父級的附加視圖,則可以用不同的角度來看待此問題。
實施例:
public class LayoutInvokeChildAdded extends RelativeLayout {
private OnDoneListener onDoneListener;
public LayoutInvokeChildAdded(Context context) {
super(context);
}
public LayoutInvokeChildAdded(Context context, AttributeSet attrs) {
super(context, attrs);
}
public LayoutInvokeChildAdded(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public void onViewAdded(View child) {
super.onViewAdded(child);
if (onDoneListener != null)
onDoneListener.onDone(childe);
}
public void setOnDoneListener(OnDoneListener onDoneListener) {
this.onDoneListener = onDoneListener;
}
}
我認爲這是剛[onAttachedToWindow](http://developer.android.com/reference/android/view/View.html#onAttachedToWindow()) – Blundell
我閱讀關於功能,但它看起來不像我所需要的。根據我的理解,只有在視圖即將繪製時纔會調用它,但我必須知道何時將其添加到父項中,甚至可能在繪圖過程開始之前發生。另外,如果視圖被刪除並添加到另一個父級,我不確定這個函數的行爲。它會再次被調用嗎? – user940016
onDetach將被調用,然後onAttach,如何重寫它們並添加日誌記錄以查找 – Blundell