public abstract class AppCompatDelegate
extends Object
java.lang.Object | |
↳ | android.support.v7.app.AppCompatDelegate |
这个类代表一个委托,你可以用它来扩展AppCompat的支持任何 Activity
。
使用AppCompatDelegate
,应该使用任何方法暴露,而不是使用Activity
方法。 这适用于:
addContentView(android.view.View, android.view.ViewGroup.LayoutParams)
setContentView(int)
setContentView(android.view.View)
setContentView(android.view.View, android.view.ViewGroup.LayoutParams)
requestWindowFeature(int)
invalidateOptionsMenu()
startSupportActionMode(android.support.v7.view.ActionMode.Callback)
setSupportActionBar(android.support.v7.widget.Toolbar)
getSupportActionBar()
getMenuInflater()
onCreate(android.os.Bundle)
onPostCreate(android.os.Bundle)
onConfigurationChanged(android.content.res.Configuration)
setTitle(CharSequence)
onStop()
onDestroy()
一个 Activity
只能与一个 AppCompatDelegate
实例链接,因此应该保留从 create(Activity, AppCompatCallback)
返回的实例,直到该活动被销毁。
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 模式,这意味着不使用夜间模式,因此更喜欢 |
int |
MODE_NIGHT_YES 模式,这意味着一直使用夜间模式,因此更喜欢 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
int FEATURE_ACTION_MODE_OVERLAY
当操作栏不存在时用于指定操作模式行为的标志。 如果启用了覆盖,则操作模式UI将被允许覆盖现有的窗口内容。
常量值:10(0x0000000a)
int FEATURE_SUPPORT_ACTION_BAR
用于启用支持操作栏的标志。
这对某些设备是默认启用的。 操作栏取代了标题栏,并为某些设备上的屏幕菜单按钮提供了备用位置。
常量值:108(0x0000006c)
int FEATURE_SUPPORT_ACTION_BAR_OVERLAY
用于请求覆盖窗口内容的支持操作栏的标志。 通常情况下,操作栏将位于窗口内容上方的空间中,但如果此功能与FEATURE_SUPPORT_ACTION_BAR
一起请求,则它将分层叠加在窗口内容本身上。 如果您希望应用程序更好地控制操作栏的显示方式,例如让应用程序内容在具有透明背景的操作栏下滚动或以其他方式在应用程序内容上显示透明/半透明操作栏,这非常有用。
此模式对于View.SYSTEM_UI_FLAG_FULLSCREEN
尤其有用,它允许您无缝地将操作栏与其他屏幕装饰一起隐藏。 当ActionBar处于此模式时,它将调整提供给View.fitSystemWindows(Rect)
的插入,以包含操作栏所涵盖的内容,以便您可以在该空间内进行布局。
常量值:109(0x0000006d)
int MODE_NIGHT_AUTO
模式意味着在确定夜晚时使用夜间模式。
用于确定是否为夜晚的计算使用位置API(如果此应用具有必要的权限)。 这使我们能够生成准确的日出和日落时间。 如果这个应用程序没有权限访问位置API,那么我们使用硬编码的时间将不太准确。
也可以看看:
常量值:0(0x00000000)
int MODE_NIGHT_FOLLOW_SYSTEM
使用系统的夜间模式设置来确定是否夜晚的模式。
也可以看看:
常量值:-1(0xffffffff)
int MODE_NIGHT_NO
模式,这意味着不使用夜间模式,因此更喜欢 notnight
合格的资源如果有的话,不分时间。
也可以看看:
常数值:1(0x00000001)
int MODE_NIGHT_YES
模式,这意味着一直使用夜间模式,因此更喜欢 night
合格的资源如果有的话,不分时间。
也可以看看:
常量值:2(0x00000002)
void addContentView (View v, ViewGroup.LayoutParams lp)
应该被称为而不是 addContentView(android.view.View, android.view.ViewGroup.LayoutParams)
}
Parameters | |
---|---|
v |
View
|
lp |
ViewGroup.LayoutParams
|
boolean applyDayNight ()
允许AppCompat应用 night
和 notnight
资源限定符。
这样做可以使 Theme.AppCompat.DayNight
主题系列工作,使用计算的暮光自动选择黑暗或浅色主题。
您可以使用 setLocalNightMode(int)
覆盖夜间模式。
这仅适用于运行 ICE_CREAM_SANDWICH
及更高版本的设备。
Returns | |
---|---|
boolean |
true if the night mode was applied, false if not |
AppCompatDelegate create (Dialog dialog, AppCompatCallback callback)
创建一个 AppCompatDelegate
以与 dialog
一起使用。
Parameters | |
---|---|
dialog |
Dialog
|
callback |
AppCompatCallback : An optional callback for AppCompat specific events |
Returns | |
---|---|
AppCompatDelegate |
AppCompatDelegate create (Activity activity, AppCompatCallback callback)
创建一个 AppCompatDelegate
以与 activity
一起使用。
Parameters | |
---|---|
activity |
Activity
|
callback |
AppCompatCallback : An optional callback for AppCompat specific events |
Returns | |
---|---|
AppCompatDelegate |
View createView (View parent, String name, Context context, AttributeSet attrs)
这应该从 LayoutInflaterFactory
调用以返回色彩感知窗口小部件。
这仅在您使用自己的 LayoutInflater
工厂时才需要,因此未通过 installViewFactory()
安装默认工厂。
Parameters | |
---|---|
parent |
View
|
name |
String
|
context |
Context
|
attrs |
AttributeSet
|
Returns | |
---|---|
View |
View findViewById (int id)
查找由 onCreate(Bundle)
中处理的XML中的id属性标识的视图。
Parameters | |
---|---|
id |
int
|
Returns | |
---|---|
View |
The view if found or null otherwise. |
int getDefaultNightMode ()
返回默认的夜间模式。
Returns | |
---|---|
int |
也可以看看:
ActionBarDrawerToggle.Delegate getDrawerToggleDelegate ()
返回一个 ActionBarDrawerToggle.Delegate
,如果它实现了 ActionBarDrawerToggle.DelegateProvider
那么它可以从您的Activity中返回。
Returns | |
---|---|
ActionBarDrawerToggle.Delegate |
ActionBar getSupportActionBar ()
支持库版本 getActionBar()
。
Returns | |
---|---|
ActionBar |
AppCompat's action bar, or null if it does not have one. |
boolean hasWindowFeature (int featureId)
查询某个功能的可用性。
这应该被称为而不是 hasFeature(int)
。
Parameters | |
---|---|
featureId |
int : The feature ID to check |
Returns | |
---|---|
boolean |
true if the feature is enabled, false otherwise. |
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.
void invalidateOptionsMenu ()
应该从 invalidateOptionsMenu()
}或 supportInvalidateOptionsMenu()
。
boolean isCompatVectorFromResourcesEnabled ()
返回是否可以从资源内访问较旧平台(<API 21)上的矢量绘图。
Returns | |
---|---|
boolean |
boolean isHandleNativeActionModesEnabled ()
返回AppCompat是否处理任何本机操作模式本身。
Returns | |
---|---|
boolean |
true if AppCompat should handle native action modes. |
void onConfigurationChanged (Configuration newConfig)
应该从 onConfigurationChanged(Configuration)
Parameters | |
---|---|
newConfig |
Configuration
|
void onCreate (Bundle savedInstanceState)
应该从 Activity.onCreate()
。
这应该在 super.onCreate()
之前 super.onCreate()
如下所示:
protected void onCreate(Bundle savedInstanceState) { getDelegate().onCreate(savedInstanceState); super.onCreate(savedInstanceState); // ... }
Parameters | |
---|---|
savedInstanceState |
Bundle
|
void onPostCreate (Bundle savedInstanceState)
应该从 onPostCreate(android.os.Bundle)
Parameters | |
---|---|
savedInstanceState |
Bundle
|
void onSaveInstanceState (Bundle outState)
允许AppCompat保存实例状态。
Parameters | |
---|---|
outState |
Bundle
|
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. |
void setCompatVectorFromResourcesEnabled (boolean enabled)
设置是否可以在 DrawableContainer
资源内使用较旧平台(<API 21)上的矢量绘图。
启用后,AppCompat可以拦截来自框架的一些可绘制的通货膨胀,这可以使DrawableContainer
资源内的矢量绘制隐式通货膨胀。 然后,您可以在android:src
上的ImageView
或android: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
|
void setContentView (View v)
应该被称为而不是 setContentView(android.view.View)
}
Parameters | |
---|---|
v |
View
|
void setContentView (View v, ViewGroup.LayoutParams lp)
应该被称为而不是 setContentView(android.view.View, android.view.ViewGroup.LayoutParams)
}
Parameters | |
---|---|
v |
View
|
lp |
ViewGroup.LayoutParams
|
void setDefaultNightMode (int mode)
设置默认的夜间模式。 这用于所有活动/对话框,但可以通过setLocalNightMode(int)
在本地覆盖。
此方法仅适用于applyDayNight()
工作的那些情况。 默认为MODE_NIGHT_NO
。
Parameters | |
---|---|
mode |
int
|
void setHandleNativeActionModesEnabled (boolean enabled)
AppCompat是否处理任何本机操作模式本身。
此方法仅在 ICE_CREAM_SANDWICH
及以上生效。
Parameters | |
---|---|
enabled |
boolean : whether AppCompat should handle native action modes. |
void setLocalNightMode (int mode)
覆盖用于此代理的主机组件的夜间模式。 此方法仅适用于applyDayNight()
工作的那些情况。
根据何时调用它,这可能会在下次创建主机组件时才生效。 您可以使用recreate()
强制进行娱乐。
Parameters | |
---|---|
mode |
int
|
也可以看看:
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 |
void setTitle (CharSequence title)
应该从 onTitleChanged(CharSequence, int)
}
Parameters | |
---|---|
title |
CharSequence
|
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 |