【问题标题】:Set ContentView and inflater in android在android中设置ContentView和inflater
【发布时间】:2016-02-13 11:15:09
【问题描述】:
请谁能说出以下之间的基本区别
setContentView(R.layout.content_main);
和
视图行 = layoutInflater.inflate(R.layout.view, parent, false);
从上面的两种方法我们得到了视图,我知道第二种方法一般在Adapter中用来给视图充气。
但我的问题是——
我们可以使用 setContentView 方法代替 inflator 来获取适配器中的视图...我很困惑,请帮帮我????
【问题讨论】:
标签:
android
adapter
setcontentview
【解决方案1】:
public void setContentView (View view):仅用于将Activity 内容设置为显式视图。
public View inflate (int resource, ViewGroup root, boolean attachToRoot):
用于从指定的 xml 资源扩展新的视图层次结构。
您不能在 Adapter 中使用 setContentView(View view),它仅适用于 Activity。
【解决方案2】:
LayoutInflator 类用于将布局 XML 文件实例化为其对应的 View 对象。
换句话说,它将一个 XML 文件 作为输入,并从中构建视图对象。
而setContentView() 只是一个活动方法。每个 Activity 都提供一个带有 id "@+id/content" 的 FrameLayout(即内容视图)。您在 setContentView 中指定的任何视图都将是该 Activity 的视图。请注意,您还可以将视图的实例传递给此方法,例如setContentView(new WebView(this)); 您正在使用的方法版本将在幕后为您放大视图。
有关更多信息,请考虑阅读:
【解决方案3】:
每个 Activity 都提供一个带有 id "@+id/content" 的 FrameLayout(即内容视图)。setContentView 只是一个 Activity 方法。无论您在 setContentView 中指定的哪个视图都将是该 Activity.Fragments 的视图,在另一方面,有一个名为 onCreateView 的生命周期方法,它返回一个视图(如果它有一个视图)。最常见的方法是在 XML 中扩充视图并在此方法中返回它。在这种情况下,您需要自己充气。片段没有“setContentView”方法
LayoutInflater.inflate 只是膨胀并返回一个视图(你可以在任何地方使用它)。您仍然需要将该视图设置为 Activity 中的内容视图。
【解决方案4】:
每个活动都通过其相关视图显示给用户
否则我们无法在屏幕上看到主题
所以每个活动都需要一个视图来显示
setContentView() 是在activity类中定义的方法,用于定义activity的视图,仅此而已
但充气机是一种从 xml 文件中获取视图的方法
从带有充气机的 xml 文件中获取视图后,我们可以在任何地方使用它们
例如在 OnCreateOptionsMenu() 中,我们应该使用充气器从 xml 文件中获取视图