我想从他的ID中获取一个视图,来自xml中的属性。我尝试过getParent()
,但它返回null。
XML
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ntwldg="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:background="@drawable/background_settings"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/revealView"
android:gravity="center"
android:text="TEST"
android:background="@android:color/darker_gray"
android:visibility="invisible"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<com.dot.networkloading.NetworkLoading
android:id="@+id/network_loading"
ntwldg:text="Youtube"
ntwldg:image="@drawable/ic_youtube"
ntwldg:imageBackground="@drawable/ic_youtube"
ntwldg:revealView="@id/revealView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
attribute
revealView
引用了上面的View
。
代码 - NetworkLoading(init())
title = (TextView) findViewById(R.id.title);
image = (ImageView) findViewById(R.id.image);
imageBackground = (ImageView) findViewById(R.id.imageBackground);
finishView = findViewById(R.id.revealView);
String text = attributes.getString(R.styleable.network_loading_text);
imageId = attributes.getResourceId(R.styleable.network_loading_image, 0);
imageBackgroundId = attributes.getResourceId(R.styleable.network_loading_imageBackground, 0);
finishView = ((View) getParent()).findViewById(attributes.getResourceId(R.styleable.network_loading_revealView, R.id.revealView));
答案 0 :(得分:2)
您似乎想要过早地找到Subscriber
。在构造函数中,revealView
尚未添加到其所在的布局中,因此View
将返回getParent()
。将null
的资源ID保留为字段,在构造函数中获取其值,然后在revealView
方法中找到View
。
在您发布的代码中,删除最后一行 - 最后一行onAttachedToWindow()
行 - 而不是将资源ID保存到您的字段中。
finishView = ...
然后在revealViewId = attributes.getResourceId(R.styleable.NetworkLoading_revealView, R.id.revealView);
方法中找到View
。
onAttachedToWindow()