155

任何人都可以解释“android.R.id.content”的含义吗?

它是如何使用的?

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

public static final int content
自:API Level 1

常数值:16908290 (0x01020002)

4

5 回答 5

107

正如Philipp Reichart 评论的那样:

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

于 2012-10-15T00:35:31.670 回答
26

android.R.id.contentID 值ViewGroup表示一个Activity.

它可以用于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();
        }
    }

    ...

}

上面的代码会将Viewcreated byFragment插入到ViewGroup标识的 byandroid.R.id.content中。

于 2014-11-19T09:21:31.233 回答
10

Google 设计师根据特定或推荐的设计指南开发 Android UX。布局 android.R.id.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">
于 2014-07-19T16:27:08.290 回答
0

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

显示小吃吧:

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

分片交易

 getSupportFragmentManager().beginTransaction()
                .add(android.R.id.content, FragmnetTest.newInstance())
                .commit();
于 2021-04-09T12:45:36.670 回答
0

从片段示例

Snackbar.make(requireContext(), requireActivity().findViewById(android.R.id.content), item.getCategoryName(), Snackbar.LENGTH_SHORT).show();
于 2021-11-26T06:24:35.383 回答