我制作了一个名为ColorPicker的自定义视图。我在我的xml中创建了我的ColorPicker。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/linearlayout_settings">
<visuals.customview.ColorPicker
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
在ColorPicker的构造中我需要一个参考我的LinearLayout,但我在这里找不到任何答案。
public ColorPicker(Context context, AttributeSet attrs) {
super(context, attrs);
//LinearLayout layout = ???;
}
我尝试了以下类似问题的解决方案:
getParent();
返回null
getRootView();
返回ColorPicker本身
findViewByID(R.id.linearlayout_settings);
返回null
提前感谢
答案 0 :(得分:1)
问题是您在getParent()
的构造函数中调用View
,此时View
尚未附加到父级。如果您想获取父级并确保其不为空,请覆盖自定义View
的{{1}}
protected void onAttachedToWindow()
答案 1 :(得分:-1)
使用“颜色”对话框 这个更好的选择活动颜色 colorDialog.setPickerColor(YourActivity.this,2,color);
OR
<visuals.customview.ColorPicker
android:layout_width="wrap_content"
android:id="@+id/vis1"
android:layout_height="wrap_content" />
在Java文件中创建对象 在java文件中查找对象
试试吧。