Android:android.R.id.content 是做啥用的?

Posted

技术标签:

【中文标题】Android:android.R.id.content 是做啥用的?【英文标题】:Android: What is android.R.id.content used for?Android:android.R.id.content 是做什么用的? 【发布时间】:2011-12-08 06:32:05 【问题描述】:

谁能解释一下“android.R.id.content”的含义?

它是如何使用的?

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

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

常数值:16908290 (0x01020002)

【问题讨论】:

android.R.id.content 为您提供视图的根元素,而无需知道其实际名称/类型/ID。查看***.com/questions/4486034/… 这在片段事务中很有用,例如:mFragmentTransaction.add(android.R.id.content, myFragment); @IgorGanapolsky 一个示例应用程序在条件条件下执行这种事务:if(fragmentManager.findFragmentById(android.R.id.content)==null) fragmentManager.beginTransaction(android.R.id.content, list).add().commit(); 你能分辨出这是哪个View 的根元素吗? @Zarah 你确定你的语法在这里正确并且可以编译吗? android.R.id.content 关联的布局类是什么? 【参考方案1】:

作为Philipp Reichart commented:

android.R.id.content 为您提供视图的根元素,而无需知道其实际名称/类型/ID。查看http://***.com/questions/4486034/android-how-to-get-root-view-from-current-activity

【讨论】:

第 2 段中可以找到一个实际的使用示例:developer.android.com/guide/topics/ui/actionbar.html#Tabs "为您提供 视图的根元素,而无需知道其实际名称/类型/ID" 它如何知道我们想要根的视图是哪个视图的元素。【参考方案2】:

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中。

【讨论】:

【参考方案3】:

Google 设计师根据特定或推荐的设计指南开发 Android 用户体验。 android.R.id.content 布局定义了一个 linearlayout,其中包含一些 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_ 
    android:layout_
    android:background="@android:drawable/edit_text"
    android:divider="@android:drawable/divider_horizontal_textfield"
    android:addStatesFromChildren="true">

【讨论】:

【参考方案4】:

android.R.id.content 在需要视图时非常有用,例如:

显示 Snackbar:

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

分片交易

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

【讨论】:

【参考方案5】:

来自片段示例

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

【讨论】:

以上是关于Android:android.R.id.content 是做啥用的?的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向Android 权限 ( Android 逆向中使用的 android.permission 权限 | Android 系统中的 Linux 用户权限 )

android 21 是啥版本

Android逆向-Android基础逆向(2-2)

【Android笔记】android Toast

图解Android - Android核心机制

Android游戏开发大全的目录