获取自定义视图的ViewGroup(布局)

时间:2017-06-04 15:38:38

标签: java android

我制作了一个名为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

提前感谢

2 个答案:

答案 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文件中查找对象

试试吧。