Android: Android . r.id .content的用途是什么?



任何人都可以解释"android.R.id.content"

?

它是如何被使用的?

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

public static final int content
自:API Level 1

恒定值:16908290 (0x01020002)

正如Philipp Reichart评论的:

android.R.id.content为您提供了视图的根元素,而不必知道它的实际名称/类型/ID。从当前活动获取根视图

如果有人需要,你可以通过使用binding.root

来获得这个视图。

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

Google设计师根据特定或推荐的设计准则开发Android UX。布局Android . r.id .content定义了一个linearlayout,其中有几个Android认为是好的标准的属性。

因此,用android.R.id.content加载Fragment Manager的根视图确保了这些准则的实现。

注意:这个布局已经设置了属性:android:addStatesFromChildren="true"来允许子片段覆盖这个根视图中的属性。

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

<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">

摘自片段示例

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

安卓。当您需要一个视图时,内容非常有用,例如:

显示间小吃店:

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

片段交易

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

最新更新