Most visited

Recently visited

AppCompatDelegate

public abstract class AppCompatDelegate
extends Object

java.lang.Object
   ↳ android.support.v7.app.AppCompatDelegate


这个类代表一个委托,你可以用它来扩展AppCompat的支持任何 Activity

使用AppCompatDelegate ,应该使用任何方法暴露,而不是使用Activity方法。 这适用于:

There also some Activity lifecycle methods which should be proxied to the delegate:

一个 Activity只能与一个 AppCompatDelegate实例链接,因此应该保留从 create(Activity, AppCompatCallback)返回的实例,直到该活动被销毁。

Summary

Constants

int FEATURE_ACTION_MODE_OVERLAY

当操作栏不存在时用于指定操作模式行为的标志。

int FEATURE_SUPPORT_ACTION_BAR

用于启用支持操作栏的标志。

int FEATURE_SUPPORT_ACTION_BAR_OVERLAY

用于请求覆盖窗口内容的支持操作栏的标志。

int MODE_NIGHT_AUTO

模式意味着在确定夜晚时使用夜间模式。

int MODE_NIGHT_FOLLOW_SYSTEM

使用系统的夜间模式设置来确定是否夜晚的模式。

int MODE_NIGHT_NO

模式,这意味着不使用夜间模式,因此更喜欢 notnight合格的资源如果有的话,不分时间。

int MODE_NIGHT_YES

模式,这意味着一直使用夜间模式,因此更喜欢 night合格的资源如果有的话,不分时间。

Public methods

abstract void addContentView(View v, ViewGroup.LayoutParams lp)

应该调用而不是 addContentView(android.view.View, android.view.ViewGroup.LayoutParams) }

abstract boolean applyDayNight()

允许AppCompat应用 nightnotnight资源限定符。

static AppCompatDelegate create(Dialog dialog, AppCompatCallback callback)

创建一个 AppCompatDelegate用于 dialog

static AppCompatDelegate create(Activity activity, AppCompatCallback callback)

创建一个 AppCompatDelegate以与 activity一起使用。

abstract View createView(View parent, String name, Context context, AttributeSet attrs)

这应该从 LayoutInflaterFactory调用以返回色彩感知窗口小部件。

abstract View findViewById(int id)

查找由 onCreate(Bundle)中处理的XML中的id属性标识的视图。

static int getDefaultNightMode()

返回默认的夜间模式。

abstract ActionBarDrawerToggle.Delegate getDrawerToggleDelegate()

返回一个 ActionBarDrawerToggle.Delegate可以从你的活动是否实现返回 ActionBarDrawerToggle.DelegateProvider

abstract MenuInflater getMenuInflater()

getMenuInflater()返回此通话的值

abstract ActionBar getSupportActionBar()

支持库版本 getActionBar()

abstract boolean hasWindowFeature(int featureId)

查询某个功能的可用性。

abstract void installViewFactory()

安装AppCompat的 LayoutInflater工厂,以便它可以用兼容的有色版本替换框架小部件。

abstract void invalidateOptionsMenu()

应该从 invalidateOptionsMenu() }或 supportInvalidateOptionsMenu()

static boolean isCompatVectorFromResourcesEnabled()

返回是否可以从资源内访问较旧平台(<API 21)上的矢量绘图。

abstract boolean isHandleNativeActionModesEnabled()

返回AppCompat是否处理任何本机操作模式本身。

abstract void onConfigurationChanged(Configuration newConfig)

应该从 onConfigurationChanged(Configuration)

abstract void onCreate(Bundle savedInstanceState)

应该从 Activity.onCreate()

abstract void onDestroy()

应该从 onDestroy()

abstract void onPostCreate(Bundle savedInstanceState)

应该从 onPostCreate(android.os.Bundle)

abstract void onPostResume()

应该从 onPostResume()

abstract void onSaveInstanceState(Bundle outState)

允许AppCompat保存实例状态。

abstract void onStop()

应该从 Activity.onStop()

abstract boolean requestWindowFeature(int featureId)

启用扩展窗口功能。

static void setCompatVectorFromResourcesEnabled(boolean enabled)

设置是否可以在 DrawableContainer资源内使用较旧平台(<API 21)上的矢量绘图。

abstract void setContentView(View v)

应该被称为而不是 setContentView(android.view.View) }

abstract void setContentView(int resId)

应该被称为而不是 setContentView(int) }

abstract void setContentView(View v, ViewGroup.LayoutParams lp)

应该调用而不是 setContentView(android.view.View, android.view.ViewGroup.LayoutParams) }

static void setDefaultNightMode(int mode)

设置默认的夜间模式。

abstract void setHandleNativeActionModesEnabled(boolean enabled)

AppCompat是否处理任何本机操作模式本身。

abstract void setLocalNightMode(int mode)

覆盖用于此代理的主机组件的夜间模式。

abstract void setSupportActionBar(Toolbar toolbar)

设置一个 Toolbar作为该代表的 ActionBar

abstract void setTitle(CharSequence title)

应该从 onTitleChanged(CharSequence, int) }

abstract ActionMode startSupportActionMode(ActionMode.Callback callback)

启动一个动作模式。

Inherited methods

From class java.lang.Object

Constants

FEATURE_ACTION_MODE_OVERLAY

int FEATURE_ACTION_MODE_OVERLAY

当操作栏不存在时用于指定操作模式行为的标志。 如果启用了覆盖,则操作模式UI将被允许覆盖现有的窗口内容。

常量值:10(0x0000000a)

FEATURE_SUPPORT_ACTION_BAR

int FEATURE_SUPPORT_ACTION_BAR

用于启用支持操作栏的标志。

这对某些设备是默认启用的。 操作栏取代了标题栏,并为某些设备上的屏幕菜单按钮提供了备用位置。

常量值:108(0x0000006c)

FEATURE_SUPPORT_ACTION_BAR_OVERLAY

int FEATURE_SUPPORT_ACTION_BAR_OVERLAY

用于请求覆盖窗口内容的支持操作栏的标志。 通常情况下,操作栏将位于窗口内容上方的空间中,但如果此功能与FEATURE_SUPPORT_ACTION_BAR一起请求,则它将分层叠加在窗口内容本身上。 如果您希望应用程序更好地控制操作栏的显示方式,例如让应用程序内容在具有透明背景的操作栏下滚动或以其他方式在应用程序内容上显示透明/半透明操作栏,这非常有用。

此模式对于View.SYSTEM_UI_FLAG_FULLSCREEN尤其有用,它允许您无缝地将操作栏与其他屏幕装饰一起隐藏。 当ActionBar处于此模式时,它将调整提供给View.fitSystemWindows(Rect)的插入,以包含操作栏所涵盖的内容,以便您可以在该空间内进行布局。

常量值:109(0x0000006d)

MODE_NIGHT_AUTO

int MODE_NIGHT_AUTO

模式意味着在确定夜晚时使用夜间模式。

用于确定是否为夜晚的计算使用位置API(如果此应用具有必要的权限)。 这使我们能够生成准确的日出和日落时间。 如果这个应用程序没有权限访问位置API,那么我们使用硬编码的时间将不太准确。

也可以看看:

常量值:0(0x00000000)

MODE_NIGHT_FOLLOW_SYSTEM

int MODE_NIGHT_FOLLOW_SYSTEM

使用系统的夜间模式设置来确定是否夜晚的模式。

也可以看看:

常量值:-1(0xffffffff)

MODE_NIGHT_NO

int MODE_NIGHT_NO

模式,这意味着不使用夜间模式,因此更喜欢 notnight合格的资源如果有的话,不分时间。

也可以看看:

常数值:1(0x00000001)

MODE_NIGHT_YES

int MODE_NIGHT_YES

模式,这意味着一直使用夜间模式,因此更喜欢 night合格的资源如果有的话,不分时间。

也可以看看:

常量值:2(0x00000002)

Public methods

addContentView

void addContentView (View v, 
                ViewGroup.LayoutParams lp)

应该被称为而不是 addContentView(android.view.View, android.view.ViewGroup.LayoutParams) }

Parameters
v View
lp ViewGroup.LayoutParams

applyDayNight

boolean applyDayNight ()

允许AppCompat应用 nightnotnight资源限定符。

这样做可以使 Theme.AppCompat.DayNight主题系列工作,使用计算的暮光自动选择黑暗或浅色主题。

您可以使用 setLocalNightMode(int)覆盖夜间模式。

这仅适用于运行 ICE_CREAM_SANDWICH及更高版本的设备。

Returns
boolean true if the night mode was applied, false if not

也可以看看:

create

AppCompatDelegate create (Dialog dialog, 
                AppCompatCallback callback)

创建一个 AppCompatDelegate以与 dialog一起使用。

Parameters
dialog Dialog
callback AppCompatCallback: An optional callback for AppCompat specific events
Returns
AppCompatDelegate

create

AppCompatDelegate create (Activity activity, 
                AppCompatCallback callback)

创建一个 AppCompatDelegate以与 activity一起使用。

Parameters
activity Activity
callback AppCompatCallback: An optional callback for AppCompat specific events
Returns
AppCompatDelegate

createView

View createView (View parent, 
                String name, 
                Context context, 
                AttributeSet attrs)

这应该从 LayoutInflaterFactory调用以返回色彩感知窗口小部件。

这仅在您使用自己的 LayoutInflater工厂时才需要,因此未通过 installViewFactory()安装默认工厂。

Parameters
parent View
name String
context Context
attrs AttributeSet
Returns
View

findViewById

View findViewById (int id)

查找由 onCreate(Bundle)中处理的XML中的id属性标识的视图。

Parameters
id int
Returns
View The view if found or null otherwise.

getDefaultNightMode

int getDefaultNightMode ()

返回默认的夜间模式。

Returns
int

也可以看看:

getDrawerToggleDelegate

ActionBarDrawerToggle.Delegate getDrawerToggleDelegate ()

返回一个 ActionBarDrawerToggle.Delegate ,如果它实现了 ActionBarDrawerToggle.DelegateProvider那么它可以从您的Activity中返回。

Returns
ActionBarDrawerToggle.Delegate

getMenuInflater

MenuInflater getMenuInflater ()

getMenuInflater()返回此通话的值

Returns
MenuInflater

getSupportActionBar

ActionBar getSupportActionBar ()

支持库版本 getActionBar()

Returns
ActionBar AppCompat's action bar, or null if it does not have one.

hasWindowFeature

boolean hasWindowFeature (int featureId)

查询某个功能的可用性。

这应该被称为而不是 hasFeature(int)

Parameters
featureId int: The feature ID to check
Returns
boolean true if the feature is enabled, false otherwise.

installViewFactory

void installViewFactory ()

安装AppCompat的LayoutInflater工厂,以便它可以用兼容的有色版本替换框架小部件。 这应该在super.onCreate()之前super.onCreate()如下所示:

 protected void onCreate(Bundle savedInstanceState) {
     getDelegate().installViewFactory();
     getDelegate().onCreate(savedInstanceState);
     super.onCreate(savedInstanceState);

     // ...
 }
 
If you are using your own Factory or Factory2 then you can omit this call, and instead call createView(android.view.View, String, android.content.Context, android.util.AttributeSet) from your factory to return any compatible widgets.

invalidateOptionsMenu

void invalidateOptionsMenu ()

应该从 invalidateOptionsMenu() }或 supportInvalidateOptionsMenu()

isCompatVectorFromResourcesEnabled

boolean isCompatVectorFromResourcesEnabled ()

返回是否可以从资源内访问较旧平台(<API 21)上的矢量绘图。

Returns
boolean

也可以看看:

isHandleNativeActionModesEnabled

boolean isHandleNativeActionModesEnabled ()

返回AppCompat是否处理任何本机操作模式本身。

Returns
boolean true if AppCompat should handle native action modes.

onConfigurationChanged

void onConfigurationChanged (Configuration newConfig)

应该从 onConfigurationChanged(Configuration)

Parameters
newConfig Configuration

onCreate

void onCreate (Bundle savedInstanceState)

应该从 Activity.onCreate()

这应该在 super.onCreate()之前 super.onCreate()如下所示:

 protected void onCreate(Bundle savedInstanceState) {
     getDelegate().onCreate(savedInstanceState);
     super.onCreate(savedInstanceState);
     // ...
 }
 

Parameters
savedInstanceState Bundle

onDestroy

void onDestroy ()

应该从 onDestroy()

onPostCreate

void onPostCreate (Bundle savedInstanceState)

应该从 onPostCreate(android.os.Bundle)

Parameters
savedInstanceState Bundle

onPostResume

void onPostResume ()

应该从 onPostResume()

onSaveInstanceState

void onSaveInstanceState (Bundle outState)

允许AppCompat保存实例状态。

Parameters
outState Bundle

onStop

void onStop ()

应该从 Activity.onStop()

requestWindowFeature

boolean requestWindowFeature (int featureId)

启用扩展窗口功能。 这应该被称为而不是requestWindowFeature(int)getWindow().requestFeature()

Parameters
featureId int: The desired feature as defined in Window.
Returns
boolean Returns true if the requested feature is supported and now enabled.

setCompatVectorFromResourcesEnabled

void setCompatVectorFromResourcesEnabled (boolean enabled)

设置是否可以在 DrawableContainer资源内使用较旧平台(<API 21)上的矢量绘图。

启用后,AppCompat可以拦截来自框架的一些可绘制的通货膨胀,这可以使DrawableContainer资源内的矢量绘制隐式通货膨胀。 然后,您可以在android:src上的ImageViewandroid:drawableLeft上的TextView等地方使用这些TextView 用法示例:

 <selector xmlns:android="...">
     <item android:state_checked="true"
           android:drawable="@drawable/vector_checked_icon" />
     <item android:drawable="@drawable/vector_icon" />
 </selector>

 <TextView
         ...
         android:drawableLeft="@drawable/vector_state_list_icon" />
 

此功能默认为禁用,因为启用它可能会导致内存使用的更新问题,而问题Configuration实例。 如果您手动更新配置,那么您可能不想启用此配置。 你被警告了。

即使在禁用此功能的情况下,您仍然可以通过setImageResource(int)app:srcCompat属性使用矢量资源。 它们也可以用于AppComapt为你膨胀的任何东西,例如菜单资源。

请注意:这只会在此通话后创建的活动中生效。

Parameters
enabled boolean

setContentView

void setContentView (View v)

应该被称为而不是 setContentView(android.view.View) }

Parameters
v View

setContentView

void setContentView (int resId)

应该被称为而不是 setContentView(int) }

Parameters
resId int

setContentView

void setContentView (View v, 
                ViewGroup.LayoutParams lp)

应该被称为而不是 setContentView(android.view.View, android.view.ViewGroup.LayoutParams) }

Parameters
v View
lp ViewGroup.LayoutParams

setDefaultNightMode

void setDefaultNightMode (int mode)

设置默认的夜间模式。 这用于所有活动/对话框,但可以通过setLocalNightMode(int)在本地覆盖。

此方法仅适用于applyDayNight()工作的那些情况。 默认为MODE_NIGHT_NO

Parameters
mode int

也可以看看:

setHandleNativeActionModesEnabled

void setHandleNativeActionModesEnabled (boolean enabled)

AppCompat是否处理任何本机操作模式本身。

此方法仅在 ICE_CREAM_SANDWICH及以上生效。

Parameters
enabled boolean: whether AppCompat should handle native action modes.

setLocalNightMode

void setLocalNightMode (int mode)

覆盖用于此代理的主机组件的夜间模式。 此方法仅适用于applyDayNight()工作的那些情况。

根据何时调用它,这可能会在下次创建主机组件时才生效。 您可以使用recreate()强制进行娱乐。

Parameters
mode int

也可以看看:

setSupportActionBar

void setSupportActionBar (Toolbar toolbar)

设置一个 Toolbar作为该代表的 ActionBar

当设置为非空值时, getSupportActionBar() ()}方法将返回一个ActionBar对象,该对象可用于控制给定的工具栏,就好像它是传统的窗口装饰操作栏。 工具栏的菜单将填充“活动的选项”菜单,导航按钮将通过标准的home菜单选择操作进行布线。

为了在活动的窗口内容中使用工具栏,应用程序不能请求窗口功能 FEATURE_SUPPORT_ACTION_BAR

Parameters
toolbar Toolbar: Toolbar to set as the Activity's action bar, or null to clear it

setTitle

void setTitle (CharSequence title)

应该从 onTitleChanged(CharSequence, int) }

Parameters
title CharSequence

startSupportActionMode

ActionMode startSupportActionMode (ActionMode.Callback callback)

启动一个动作模式。

Parameters
callback ActionMode.Callback: Callback that will manage lifecycle events for this context mode
Returns
ActionMode The ContextMode that was started, or null if it was canceled

Hooray!