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 用户权限 )