如何以编程方式从布局中获取子视图 [来自 R.layout 资源]

How to get child views programmatically from a layout [from a R.layout resource]

在我的应用程序中,有时需要从布局中获取视图(实际上,它应该是一个)。 我对布局的了解是 int 参考,形式为 R.layout.my_layout.

我怎样才能看到里面的风景?

我尝试使用

获取根视图

View rootView = (View) getResources().getLayout(R.layout.my_layout)

但显然没有用。 getLayout() returns一个XMLResourceParser对象,我不知道如何管理。

我无法使用 ID。

使用布局充气器

View rootView = View.inflate(context, R.layout.my_layout, null);

如果您有布局资源 ID,则需要扩充布局并从中获取视图:

View rootView = getLayoutInflater().inflate(layoutId, null);

使用这个:

ViewGroup rootView = (ViewGroup) getLayoutInflater().inflate(R.layout.my_layout,null);

并通过

访问子视图
rootView.getChildAt(x);

或孩子总数:

rootView.getChildCount();

获得视图后,您只需使用 -

view.findViewById(R.id.childID)

其中,

childID 是父视图的子视图的子 ID。

加载视图:

    LayoutInflater inflater = LayoutInflater.from(getContext());
    View v = inflater.inflate(R.layout.your_layout, null);

并从中获取子视图:

    View sub = v.findViewById(R.id.your_sub_view_id);