Anybody could explain the meaning of "android.R.id.content" ?
How is it being used ?
http://developer.android.com does not have any explanation.
public static final int content
Since: API Level 1Constant Value: 16908290 (0x01020002)
Anybody could explain the meaning of "android.R.id.content" ?
How is it being used ?
http://developer.android.com does not have any explanation.
public static final int content
Since: API Level 1Constant Value: 16908290 (0x01020002)
As Philipp Reichart commented:
android.R.id.content
gives you the root element of a view, without having to know its actual name/type/ID. Check out Get root view from current activity
In case anyone need, you can get this view with View Binding by using binding.root
The android.R.id.content
ID value indicates the ViewGroup
of the entire content area of an Activity
.
It can be used with 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();
}
}
...
}
The code above will insert the View
created by Fragment
into the ViewGroup
identified by android.R.id.content
.
Google designers develop Android UX with specific or recommended design guidelines. The layout android.R.id.content defines a linearlayout with a few attributes Android believes are a good standard.
Thus loading a Fragment Manager's root view with android.R.id.content ensures these guidelines are implemented.
NOTE: This layout has set the attribute: android:addStatesFromChildren="true" to allow child fragments to overwrite attributes in this rootview.
As of version 19, android.R.id.content is defined in a file: 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">
From Fragment Example
Snackbar.make(requireContext(), requireActivity().findViewById(android.R.id.content), item.getCategoryName(), Snackbar.LENGTH_SHORT).show();
android.R.id.content is very useful for when you need a view, for example:
Show Snackbar:
Snackbar.make(activity.findViewById(android.R.id.content), MESSAGE, Snackbar.LENGTH_LONG).show();
Fragment transaction
getSupportFragmentManager().beginTransaction()
.add(android.R.id.content, FragmnetTest.newInstance())
.commit();