Android: Android.rid.content 是用来做什么的?

谁能解释一下“ android. R.id.content”的意思?

它是如何被使用的?

Http://developer.android.com 没有任何解释。

公共静态最终整型内容
自: API 级别1

常数值: 16908290(0x01020002)

82109 次浏览

作为 Philipp Reichart 评论道:

android.R.id.content提供视图的根元素,而不需要知道它的实际名称/类型/ID

如果有人需要,您可以通过使用 binding.root使用 视图绑定获得这个视图

谷歌设计师开发 Android 用户体验具体或推荐的设计指南。Content 的布局定义了一个 线性布局,其中有一些 Android 认为是很好的标准属性。

因此,使用 android.R.id.content 加载片段管理器的根视图可以确保实现这些准则。

注意: 这个布局设置了属性: Android: addStatesFromChildren = “ true”以允许子片段覆盖这个根视图中的属性。

从版本19开始,android.R.id.content 在一个文件中定义: auto _ complete _ list. xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/content"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:drawable/edit_text"
android:divider="@android:drawable/divider_horizontal_textfield"
android:addStatesFromChildren="true">

android.R.id.content ID 值表示 Activity的整个内容区域的 ViewGroup

它可以与 Fragment一起使用:

public class MyActivity extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);


if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(android.R.id.content, MyFragment.newInstance())
.commit();
}
}


...


}

上面的代码将把由 Fragment创建的 View插入到由 android.R.id.content标识的 ViewGroup中。

Content 在需要视图时非常有用,例如:

展示点心吧:

Snackbar.make(activity.findViewById(android.R.id.content), MESSAGE, Snackbar.LENGTH_LONG).show();

碎片交易

 getSupportFragmentManager().beginTransaction()
.add(android.R.id.content, FragmnetTest.newInstance())
.commit();

来自片段示例

Snackbar.make(requireContext(), requireActivity().findViewById(android.R.id.content), item.getCategoryName(), Snackbar.LENGTH_SHORT).show();