【问题标题】:Android: What is android.R.id.content used for?Android:android.R.id.content 是做什么用的?
【发布时间】:2023-04-03 08:55:02
【问题描述】:

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

它是如何使用的?

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

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

常数值:16908290 (0x01020002)

【问题讨论】:

  • android.R.id.content 为您提供视图的根元素,而无需知道其实际名称/类型/ID。查看stackoverflow.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 关联的布局类是什么?

标签: android android-resources


【解决方案1】:

作为Philipp Reichart commented:

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

【讨论】:

【解决方案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_width="match_parent" 
        android:layout_height="wrap_content"
        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();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-05-29
          • 2011-08-24
          • 2014-03-04
          • 2012-05-19
          • 2011-10-25
          • 2015-07-17
          • 2014-02-26
          相关资源
          最近更新 更多