【问题标题】:Android: Getting the View added with LayoutInflatorAndroid:使用 LayoutInflater 添加视图
【发布时间】:2012-06-11 18:58:26
【问题描述】:

Java 或 C# 答案很好(我们使用 MonoDroid)

我成功地将控件添加到 LinearLayout 中:

    LayoutInflater _inflatorservice = (LayoutInflater)this.GetSystemService(Context.LayoutInflaterService);
    var viewContainer = _inflatorservice.Inflate(Resource.Layout.ReportItImageButton, myLinearLayout);

然后如何获得对刚刚添加的视图的引用?我以这种方式添加了许多相同的控件,因此需要将第 n 个项目添加到布局中。

【问题讨论】:

  • ((查看) viewContainer) ?
  • 这给了我线性布局容器,但不是刚刚添加的内容
  • 您能发布您的 ReportItImageButton.xml 布局吗?如果您从Inflate 返回一个LinearLayout,那可能就是您正在膨胀的内容...

标签: android mono xamarin.android layout-inflater


【解决方案1】:

这可行,假设项目的类型为Button,它会获取添加的最新项目。

LayoutInflater _inflatorservice = (LayoutInflater)this.GetSystemService(
    Context.LayoutInflaterService);
var layout = _inflatorservice.Inflate(
    Resource.Layout.ReportItImageButton, layoutImages) as LinearLayout;

if (layout != null)
{
    var b = layout.GetChildAt(layout.ChildCount - 1) as Button;
    if (b != null)
    {
    }
}

【讨论】:

  • 看起来您的 XML 文件并不完美。最好将 LinearLayout 排除在外。
【解决方案2】:
View v = myLinearLayout.findViewById(R.id.myViewId)

myViewId 应该与 ReportItImageButton.xml 文件中指定的 id 相同

【讨论】:

    【解决方案3】:

    还有一个附加参数。它不会将您的膨胀视图添加到 myLinearLayout,但仍会返回它的 View 对象。

    var viewObj = _inflatorservice.Inflate(
        Resource.Layout.ReportItImageButton, myLinearLayout, false);
    

    请注意,例如,如果您添加了 LinearLayout,那么您将返回 LinearLayout。此方法返回 XML 布局的 root 视图,因此它可以是任何类型的 View

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-03
      • 1970-01-01
      • 1970-01-01
      • 2015-05-04
      • 1970-01-01
      相关资源
      最近更新 更多