gpt4 book ai didi

android - 在扩展用于 MenuItem ActionView 的布局时,我应该为 root 传递什么?

转载 作者:IT王子 更新时间:2023-10-29 00:09:33 26 4
gpt4 key购买 nike

我有一个 ImageView 作为它的 ActionView 附加到 MenuItem (该项目出现在 ActionBar)。此 View 的布局来自 XML。我像这样膨胀它:

ImageView actionView = (ImageView) layoutInflater.inflate(
R.layout.action_view_layout, null);

这似乎工作正常。然而;在对 inflate() 的调用中为 root 传递 null 会使 Lint 对我大喊:

Avoid passing null as the view root (need to resolve layout parameters on the inflated layout's root element)

在我的特定情况下,我似乎可以在没 Root过的情况下进行管理,但我希望代码尽可能正确。问题是,我不确定应该将哪个 View 用作此处的根。 This answer说它应该是“围绕要膨胀的 View 对象的小部件”。但这意味着什么?用于操作栏的那个? Activity ?完全不同的东西?


更新:阅读答案让我怀疑我的正确做法是:

  1. 获取MenuItem
  2. 对应的 ActionBar View
  3. 找到它的根源
  4. 将根转换为 ViewGroup
  5. 将结果传递给充气机

这似乎有效。谁能确认或否认这是否应该做?

最佳答案

我会这样做:

menuItem.setActionView(R.layout.action_view_layout);

让 Android 为您放大 View 。

如果您需要对此 ImageView 调用做一些额外的更改

ImageView imageView = (ImageView) menuItem.getActionView();

更新

为了满足你的好奇心。这就是 Google 的员工在幕后所做的:

public MenuItem setActionView(int resId) {
final Context context = mMenu.getContext();
final LayoutInflater inflater = LayoutInflater.from(context);
setActionView(inflater.inflate(resId, new LinearLayout(context), false));
return this;
}

关于android - 在扩展用于 MenuItem ActionView 的布局时,我应该为 root 传递什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23846146/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com