- 浏览: 37127 次
- 性别:
文章分类
最新评论
ActonBar介绍
ActionBar取代了传统的标题栏(title),其在activity位置就是title原有的位置,在activity的顶部。ActionBar上默认情况下包括了应用(app)的logo,logo的位置在ActionBar的左侧,紧挨在logo右侧的是activity的标题(title)。在ActionBar的右侧,可以是在选项菜单(options menu)中任意一个菜单项。ActionBar提供若干有用的特性,其中包括了:
① 作为“action选项”,在ActionBar上直接显示“选项菜单”(OptionsMenu)——
为用户进行某项操作提供直接的访问;
作为“action项”没有出现在ActionBar上得菜单项会被置于“更多...”菜单项
中,在ActionBar上,“更多...”菜单项是以下拉形式实现的。
② 为在多个fragments之间切换提供标签(tabs)功能;
③ 为导航提供下拉列表;
④ 在“action项”位置提供交互式action组件,例如搜索框。
在Activity中获得ActionBar
在Android 3.0及更高的版本中,Activity中都默认包含有ActionBar组件。特别要注意的是,所有使用“holographic”主题的Activity都包含有ActionBar,并且所有Android 3.0上的应用自动接收这个主题。一个应用被认为是基于Android 3.0的标识是在AndroidManifest中的<uses-sdk>标签中设置了android:minSdkVersion或者android:targetSdkVersion属性值为11或者更大值时,此时的应用被系统认为是Android 3.0上得应用,这样就默认接受“holographic”主题,即其中的Activity包含有ActionBar。例如:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.helloworld"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="4"
android:targetSdkVersion="11" />
<application ... >
...
</application>
</manifest>
在这个例子中应用需求的最小的API版本号是4(Android 1.6),但同时这是了目标API版本是11(Android 3.0)。这样当这个应用程序在运行Android 3.0或者更高版本的设备上运行时,系统会在应用程序的Activity上应用“holographic”主题,这样每个Activity就都包含有ActionBar。
但是如果你想使用ActionBar的API,例如增加标签(tabs)或者改变ActionBar风格,那么你必须设置android:minSdkVersion的值为11,这样你才可以访问到ActionBar类。
取消ActionBar
如果你在某个Activity中不需要ActionBar,那么将Activity的主题设置为Theme.Holo.NoActionBar。例如:
<activity android:theme="@android:style/Theme.Holo.NoActionBar">
指导:若果在你不需要ActionBar的Activity中有自定义的Activity主题,那么设置android:windowActionBar风格属性的值为false,有关ActionBar的风格在后面会讨论到。
同样,在运行时调用hide()方法也可以隐藏ActionBar,调用show()方法来显示ActionBar()。例如:
ActionBar actionBar = getActionBar();
actionBar.hide();
当你隐藏ActionBar时,系统会将Activity的整个内容充满整个空间。
注意:如果使用一个主题(theme)来移除Activity上得ActionBar,那么窗口将不再会有ActionBar,因此在运行时也就没有办法来添加ActionBar——调用getActionBar()方法会返回null值。
增加Action Item
一个Action Item实质上仅仅是一个Options Menu菜单项,这个菜单项被声明直接在ActionBar上显示而已。一个Action Item可以包含一个图标,一个文本或者两个兼有。如果一个Acton Item没有出现在ActionBar上,那么系统会将其放置在“更多”菜单中,用户可以通过ActionBar右侧的图标打开“更多”菜单项。
当Activity首次启动时,系统会通过调用onCreateOptionsMenu()方法来将菜单项放置于ActionBar和“更多”菜单当中。就如在Menu开发指导中讲述到的一样,在这个回调方法中,我们为Activity定义选项菜单(Options Menu)。
如果要声明在ActionBar上有空间时才显示一个Action Item的话,你可以在菜单资源(menu resource)的<item>标签中设置android:showAsAction="ifRoom"来将一个菜单项声明为Action Item。这样只有当ActionBar上有空间来显示这个菜单项时,才会显示来直接进行访问(其功能)。如果ActionBar上没有足够的空间,那么Action Item会被放置于“更多”菜单项中(可以通过点击ActionBar右侧图标打开查看到菜单项)。
同样也可以通过在应用的代码中声明一个Action Item。通过调用MenuItem对象的setShowAsAction()方法,并传入SHOW_AS_ACTION_IF_ROOM参数值。
如果菜单项(options menu)包含了图标和文本,而默认情况下,Action Item只显示图标。如果你想在Action Item上同时也显示文本,需要添加“with text”标识位。在XML中,在android:showAsAction属性值上添加“withText”属性值,或者在代码中调用setShowAsAction()方法是传入SHOW_AS_ACTION_WITH_TEXT参数值。图2中显示的是ActionBar上有图标和文本的Action Item和“更多”菜单项的图标。
图2有图标和文本的菜单项及“更多”菜单项图标
如下是如何在菜单资源(menu resource)文件中将菜单项声明为Action Item的例子:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_save"
android:icon="@drawable/ic_menu_save"
android:title="@string/menu_save"
android:showAsAction="ifRoom|withText" />
</menu>
在这个例子当中,同时设置了“ifRoom”和“withText”属性值,因此,当菜单显示在ActionBar上时,会同时显示图标和文本。
在ActionBar上的菜单项和在选项菜单中(options menu)中菜单项一样会触发相同的回调方法。当用户选择一个Action Item时,Activity会接收到对onOptionsItemSelected()回调方法的调用,并且传入菜单项的ID值。
注意:如果你是在一个fragment中添加的菜单项,那么对于相应fragment的onOptionsItemSelected()方法也会被调用。但是Activity的拥有首先处理的优先权,即首先调用到Activity的onOptionsItemSelected()方法,然后再调用fragment的onOptionsItemSelected()的方法。
你也可以声明一个菜单项一直在ActionBar上显示,但是最好避免这么做,因为如果有太多的Acton Item的话会导致一个杂乱的UI,并且可能会和ActionBar上得其他元素冲突。
要知道跟多Menu内容的话,可以查看Menu开发指导。
使用应用图标作为Action Item
默认情况下,应用的图标出现在ActionBar的左侧。应用图标同样会对用户交互做出响应(当用户触碰到图标时,它会和一般的Action Item做出一样的响应),并且用户触碰到图标要做的事情就是开发者的任务了。
图3 Email的ActionBar,应用图标在左侧
当用户触及到图标时,正常的行为时应用回到其主界面,或者回到初始状态(例如,Activity没有改变,但是fragment改变了)。如果用户已经在主界面并在初始初始状态,那么你就不需要再坐什么事情。
当用户点击应用图标时,系统调用Activity的onOptionsItemSelected()方法并传入R.id.home ID值。因此,你需要在onOptionsItemSelected()方法中添加一个条件来监听R.id.home并作出一个合适的响应,例如返回主界面或者弹出最近的fragment业务。
如果你以返回应用主界面来相应用户点击,那么你需要在Intent中包含FALG_ACTIVITY_CLEAR_TOP。使用这个标志位,当你要启动的Activity在当前的task中已经存在时,在该Activity(在堆栈中)上面的其他Activity都被销毁,目标Activity就显示在屏幕前面。你应该更加选择这个方法,因为返回应用主界面的行为相当于“going back”并且通常你不应该创建应用home activity的一个新实例。否则,在当前的task中你遭遇到长的Activity栈的返回结果。
例如,如下是回到应用主界面的onOptionsItemSelected()方法的实现:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
// app icon in Action Bar clicked; go home
Intent intent = new Intent(this, HomeActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
使用应用图标往回导航(navigate “up”)
你也可以使用应用图标为用户提供“向上”导航功能。这在你的应用由多个Activity组成时很有用,多个Activity按一定的顺序显示并且在Activity层次上为用户简化导航向上的功能(不管是怎样进入到当前的Activity)。
对这个事件的响应方式和返回应用主界面的方式一样【代码一样】(如上讨论的,除了启动一个不同的Activity之外,都是基于当前的Activity)。你所需要做的事情是设置ActionBar“向上显示主界面”(show home as up)的功能来向用户表示一种不同的行为。你可以通过调用对应Activity的ActionBar的setDisplayHomeAsUpEnabled(true)来完成此功能。当你这么做的时候,系统绘制带箭头的应用图标,如图4。
图4 标准的Email应用图标(上)和“向上”图标(下)
例如,如下是你如何来显示一个“向上”的图标:
@Override
protected void onStart() {
super.onStart();
ActionBar actionBar = this.getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
}
那样,你的Activity应该在onOptionsItemSelected()方法中对R.id.home ID值进行监听(如上显示)来响应用户点击应用图标。在这个例子中,对于在Intent中使用FLAG_ACTIVITY_CLEAR_TOP标识位尤其重要,以至于当一个Activity已经存在时无需再创建一个实例。
添加Action视图(Action View)
一个Action视图实际上是出现在ActionBar上的组件,它取代了在ActionBar上得Action Item。例如,如果你的选项菜单(options menu)中有“搜素”菜单,只要Action Item可用,你都可以为菜单项添加一个Action视图来提供搜索组件(SearchView)。
当为一个菜单项添加一个Action视图,菜单项没有在ActionBar上出现时,允许Action Item像一个正常的菜单项一样进行行为很重要。例如,默认情况下,执行搜索功能的菜单项(options menu)应该会产生一个Android搜索对话框,但是如果这个菜单项放到ActionBar当中,Action视图会带着SearchView组件出现在ActionBar上。图5显示了出现在ActionBar上的SearchView组件。
图5 带有SearchView组件的Action视图
声明一个Action视图最好的方式是在你的菜单资源(menu resource)当中使用android:actionLayout或者android:actionViewClass属性:
① android:actionLayout的值必须是一个布局文件的引用,例如:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_search"
android:title="Search"
android:icon="@drawable/ic_menu_search"
android:showAsAction="ifRoom"
android:actionLayout="@layout/searchview" />
</menu>
② android:actionViewClass的值必须是你使用的视图类的完全限定名,例如:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_search"
android:title="Search"
android:icon="@drawable/ic_menu_search"
android:showAsAction="ifRoom"
android:actionViewClass="android.widget.SearchView" />
</menu>
当有足够的空间时,为了使Action视图出现在ActionBar上,你必须按次序包括android:showAsAction="ifRoom"。但是,如果有必要,你可以设置设置android:showAsAction的值为“always”来让菜单项做为Action视图出现。
现在,当一个菜单项作为Action Item显示时,它的Action视图会出现,而不是它的图标或者/和文本。但是,如果ActionBar上没有足够的空间,Action Item像一般选项菜单一样显示在“更多”菜单项中,而且在onOptionsItemSelected()回调中对菜单事件作出回应。
当Activity首次启动的时候,系统会调用onCreateOptionsMenu()方法来创建ActionBar上得Action Item和“更多”菜单中的菜单项。当你在这个方法中创建菜单后,你可以通过菜单的ID值和findItem()方法获得MenuItem对象,然后再调用MenuItem对象的getActionView()方法在Action视图中获得相关元素(可能是为了添加监听器)。例如,像上面声明的搜索组件可以向如下的方式来进行获得:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.options, menu);
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
// Set appropriate listeners for searchView
...
return super.onCreateOptionsMenu(menu);
}
想要获得更多有关SearchView的信息,可以查看创建搜索界面的开发知道。
增加标签(tabs)
在Activity中ActionBar可以显示tabs,来使用户可以再不通的fragment之间进行切换。每个tab可以包含图标或者/和文本。
开始之前,你的布局中必须包含一个View,View当中要包含和tab相关联的需要进行显示的fragment。而且必须确保你的View有ID,以便在代码中可以被引用。
图6 ActionBar上的tab,截图是gallery实例应用
在ActionBar上增加tab:
1. 首先是创建一个队ActionBar.TabListener的实现,以便来处理tab交互时的事件。你必须实现所有的方法:onTabSeleceted(),onTabUnselected()和onTabReselected()。
每个回调都传入ActionBar.Tab对象,ActionBar.Tab对象接收事件及用来执行fragment业务的一个FragmentTransaction对象(增加或者删除fragment)。
例如:
private class MyTabListener implements ActionBar.TabListener {
private TabContentFragment mFragment;
// Called to create an instance of the listener when adding a new tab
public MyTabListener(TabContentFragment fragment) {
mFragment = fragment;
}
public void onTabSelected(Tab tab, FragmentTransaction ft) {
ft.add(R.id.fragment_content, mFragment, null);
}
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
ft.remove(mFragment);
}
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// do nothing
}
}
这一对ActionBar.TabListener实现增加了一个构造方法,用以保存与tab相关的fragment,这样在每个回调中就可以对该fragment进行添加或者删除。
2. 在onCreate()方法中调用getActionBar()方法来获得Activity的ActionBar对象。(但是要确保在表用getActionBar()方法之前已经调用了setContentView()方法)。
3. 调用ActionBar的setNavigationMode(NAVIGATION_MODE_TABS)方法来启用其tab模式。
4. 为ActionBar创建tab
1. 在ActionBar上调用newTab()来创建一个ActionBar.Tab对象。
2. 调用setIcon()和/或者setText()方法来增加图标和/或者标题。
指点:这些方法返回的是同一个ActionBar.Tab对象,因此可以连续调用
3. 在setTabListener()方法中传入声明的ActionBar.TabListener实现对象。
5. 在ActionBar上调用addTab()并传入ActionBar.Tab来在ActionBar上增加标签。
例如,如下是进行了第2~5步在ActionBar上增加标签:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// setup Action Bar for tabs
final ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
// remove the activity title to make space for tabs
actionBar.setDisplayShowTitleEnabled(false);
// instantiate fragment for the tab
Fragment artistsFragment = new ArtistsFragment();
// add a new tab and set its title text and tab listener
actionBar.addTab(actionBar.newTab().setText(R.string.tab_artists)
.setTabListener(new TabListener(artistsFragment)));
Fragment albumsFragment = new AlbumsFragment();
actionBar.addTab(actionBar.newTab().setText(R.string.tab_albums)
.setTabListener(new TabListener(albumsFragment)));
}
当tab被选择时所进行的行为你都要在ActionBar.TabListener的回调方法中进行定义。当一个tab被选择时,onTabSelected()方法被调用并且在此方法中可以使用提供的FragmentTransaction的add()方法在目标视图(View)中添加适合的fragment。同样地,当一个tab没有被选择(因为另一个tab被选择),你应该使用remove()方法从布局中移除fragment。
小心:对这次transaction你不必调用commit()方法——因为系统会为你调用,如果你自己调用可能会派出异常。你也不能将这些fragment transaction增加到后台栈当中。
当你的Activity stop()时,你应该保留住当前的tab和其状态以便在用户返回到应用时可以打开tab。当要保存状态时,你可以调用getSelectedNavigatonIndex()方法来访问当前被选中的tab,这个方法返回被选中的tab的索引位置。
小心:适时保存fragment的状态时很重要得事情,以为当用户在tab之间的fragment当中切换,又返回之前的fragment。要获得更多有关fragment保存状态的信息,可以查看fragment开发知道。
增加下拉导航(drop-down navigation)
作为Activity的另外一种导航模式,你可以在ActionBar上提供下拉列表。例如,下拉列表可以为Activity提供对内容进行排序或者更换账号提供选择。
如下是快速使用下拉模式的步骤:
1. 为下拉列表创建一个列表项的SpinnerAdapter和放置每个列表项的布局。
2. 实现ActionBar.OnNavigationListener来定义当列表项被选择时进行的操作。
3. 使用setNavigationMode()方法启用导航功能,例如:
ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
注意:你应该在onCreate()方法中执行这段代码。
4. 然后,调用setListNavigationCallbacks()方法为下拉列表设置回调,例如:
actionBar.setListNavigationCallbacks(mSpinnerAdapter, mNavigationCallback);
这个方法需要SpinnerAdapter和ActionBar.OnNavigationListener作为参数。更多内容继续往下看。
这些是基本步骤。但是大多数的工作实现的SpinnerAdapter和ActionBar.OnNavigationListener中已经做了。有许多的方式来为你的下拉列表定义功能,而对SpinnerAdapter的许多实现方式已经超出了这部分文档的说明范围(你应该参照SpinnerAdapter类来获得更多的知识)。但是,下面是对SpinnerAdapter的一种实现和ActionBar.OnNavigationListener的实现。
对SpinnerAdapter和ActionBar.OnNavigationListener的实例:
SpinnerAdapter是为spinner组件提供数据的一个适配器,例如为ActionBar上下拉列表提供数据。SpinnerAdapter是一个接口,你可以对其进行实现,但是在Android中包含若干个你可以进行扩展的接口,录入ArrayAdapter和SimpleCursorAdapter。例如,下面是使用ArrayAdapter来创建一个SpinnerAdapter的一种简单实现,它使用一个字符串数组作为数据源:
SpinnerAdapter mSpinnerAdapter = ArrayAdapter.createFromResource(this, R.array.action_list,android.R.layout.simple_spinner_dropdown_item);
createFromResource()方法有三个参数:应用Context,数组资源ID,每个列表项的布局。
一个定义好的字符串数组就像下面的一样:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="action_list">
<item>Mercury</item>
<item>Venus</item>
<item>Earth</item>
</string-array>
</resources>
createFromResource()所返回的ArrayAdapter对象就这样实现了并且可以准备好传入到setListNavigationCallbacks()方法中(像在第4步中进行的一样)。但是在你这么做之前,你应该先创建OnNavigationListener对象。
在ActionBar.OnNavigationListener的实现当中,你可以处理用户在下拉列表中选择一个列表项时产生的事件,你可以对fragment的改变进行处理或者在Activity上得其他修改。在这个监听中只有一个回调:onNavigationItemSelected()。
onNavigationItemSelected()方法中接收列表项在列表中的位置值和SpinnerAdapter提供的唯一的列表项的ID值。
下面是对OnNavigationListener的一个匿名实现,在实现当中,在R.id.fragment_container所表示的布局容器中插入fragment:
mOnNavigationListener = new OnNavigationListener() {
// Get the same strings provided for the drop-down's ArrayAdapter
String[] strings = getResources().getStringArray(R.array.action_list);
@Override
public boolean onNavigationItemSelected(int position, long itemId) {
// Create new fragment from our own Fragment class
ListContentFragment newFragment = new ListContentFragment();
FragmentTransaction ft = openFragmentTransaction();
// Replace whatever is in the fragment container with this fragment
// and give the fragment a tag name equal to the string at the position selected
ft.replace(R.id.fragment_container, newFragment, strings[position]);
// Apply changes
ft.commit();
return true;
}
};
完成了对OnNavigationListener的实现,接下来你就可以调用setListNavigationCallbacks()方法(在第4步中的操作),并且传入ArrayAdapter和OnNavigationListener。
在这个例子当中,当用户在列表中选择了一个列表项,一个fragment就被添加到了布局当中(在R.id.fragment_container中取代当前的fragment)。被添加的fragment上被给予了一个唯一定义的tag,这个tag与被用来定义下拉列表中的列表项的tag一样。
下面的例子让我们看看ListContentFragment类中定义的每个fragment:
public class ListContentFragment extends Fragment {
private String mText;
@Override
public void onAttach(Activity activity) {
// This is the first callback received; here we can set the text for
// the fragment as defined by the tag specified during the fragment transaction
super.onAttach(activity);
mText = getTag();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// This is called to define the layout for the fragment;
// we just create a TextView and set its text to be the fragment tag
TextView text = new TextView(getActivity());
text.setText(mText);
return text;
}
}
ActionBar的自定义风格
ActionBar是应用的基础也是用户进行交互的基本点,因为你有可能为了使使用户使用起来觉得与应用更加一致而修改ActionBar的设计。
要对ActionBar进行简单修改,你可以使用下面的方法:
setBackgroundDrawable():
使用一个drawable来用作ActionBar的背景。一个drawable可以是一个9.png图片,
一个形状或者一个填充颜色。这样,系统就可以根据ActionBar的大小来调整drawable
的大小(最好不要使用固定大小的图片资源)。
setDiaplayUseLogoEnabled():
在ActionBar上使用一个可选图片(比如Logo),而不是应用图标。一个logo通常
是一个更宽更清楚地代表一个应用。如果启用了这个功能,那么在AndroidManifest当
中就可以为应用(或者某个Activity)定义一个logo的图片资源,使用android:logo属
性来进行定义。Logo将为适应ActionBar的高度被适时地缩放。(作为应用logo,最好
的实际就是设计大小相同的logo)
要获得更多更复杂的自定义风格,可以查看style and theme开发指导,可以获得有集中方式来自定义ActionBar的风格。
ActionBar有两个标准的风格,“dark”和“light”。dark主题默认跟随这holographic主题被应用。如果你想要一个白底黑字风格,在Manifest当中你可以使用Theme.Holo.Light主题。例如:
<activity android:name=".ExampleActivity"
android:theme="@android:style/Theme.Holo.Light" />
对于更多的设置,你可以重写Theme.Holo或者Theme.Holo.Light主题并在ActionBar的某个方面去应用自定义风格。下面是你可以使用来进行自定义的一些属性:
android:actionBarTabStyle
定义ActionBar.Tab的风格。
android:actionBarTabBarStyle
ActionBar的tab后面的风格。
android:actionBarTabTextStyle
Tab上文字的风格。
android:actionDropDownStyle
“更多”菜单中下拉风格
android:actionButtonStyle
在ActionBar上得按钮的背景图片的风格
例如,下面是基于Theme.Holo主题的自定义风格:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- the theme applied to the application or activity -->
<style name="CustomActionBar" parent="android:style/Theme.Holo.Light">
<item name="android:actionBarTabTextStyle">@style/customActionBarTabTextStyle</item>
<item name="android:actionBarTabStyle">@style/customActionBarTabStyle</item>
<item name="android:actionBarTabBarStyle">@style/customActionBarTabBarStyle</item>
</style>
<!-- style for the tab text -->
<style name="customActionBarTabTextStyle">
<item name="android:textColor">#2966c2</item>
<item name="android:textSize">20sp</item>
<item name="android:typeface">sans</item>
</style>
<!-- style for the tabs -->
<style name="customActionBarTabStyle">
<item name="android:background">@drawable/actionbar_tab_bg</item>
<item name="android:paddingLeft">20dp</item>
<item name="android:paddingRight">20dp</item>
</style>
<!-- style for the tab bar -->
<style name="customActionBarTabBarStyle">
<item name="android:background">@drawable/actionbar_tab_bar</item>
</style>
</resources>
注意:为了基于当前的tab状态(选中,按下,不选择)来改变背景图片,drawable资源必须是state list drawable。同样,要保证你声明了一个父主题,从这个父主题是继承的,没有在现在的主题中进行显示声明。
你可以再Manifest当中对私有的Activity或者整个应用使用这个自定义个风格,例如:
<application android:theme="@style/CustomActionBar"
... />
此外,如果你想为你的Activity创建自定义主题,而你的Activity已经完全移除了ActionBar,使用下面的风格属性:
android:windowActionBar
设置这个属性值为false可以移除ActionBar
android:windowNoTitle
设置这个属性值为true,同样移除传统的标题栏
要获取更多有关在应用中使用风格和主题,可以查看Styles and Themes文档。
发表评论
-
Android菜单详解(五)——使用XML生成菜单
2012-05-08 15:58 1072回顾前面的几篇,我们都是直接在代码中添加菜单项,给菜单项分组等 ... -
Android菜单详解(五)——使用XML生成菜单
2012-05-08 15:57 0回顾前面的几篇,我们 ... -
Android笔记 - UI Menu (3) Action Bar
2012-05-08 15:52 2037自android3.0来Action ... -
Android笔记 - UI Menu (3) Action Bar
2012-05-08 15:51 0自android3.0来Action Bar就 ...
相关推荐
ActionBar取代了传统的标题栏(title),其在activity位置就是title原有的位置,在activity的顶部。ActionBar上默认情况下包括了应用(app)的logo,logo的位置在ActionBar的左侧,紧挨在logo右侧的是activity的标题...
安卓action bar组件的介绍及使用说明
Android4.0(API等级14)引入的ActionProvider类使得分享功能变得更加的简单。一旦ActionProvider被绑定到Action Bar的一个菜单中,它就能处理那一项的显示和反应。在ShareActionProvider的实例中,只需提供分享的...
对于Android4.0及更高版本,ActionBarSherlock可以自动使用本地ActionBar实现,而对于之前没有ActionBar功能的版本,基于Ice CreamSandwich的自定义动作栏实现将自动围绕布局。能够让开发者轻松开发一款带动作栏...
对于Android 4.0及更高版本,ActionBarSherlock可以自动使用本地ActionBar实现,而对于之前没有ActionBar功能的版本,基于Ice Cream Sandwich的自定义动作栏实现将自动围绕布局。能够让开发者轻松开发一款带动作栏...
The library will automatically use the native ActionBar implementation on Android 4.0 or later. For previous versions which do not include ActionBar, a custom action bar implementation based on the ...
is an extensive programming guide for the Android 4.0 SDK (the first SDK of Android to cover both phones and tablets). In this edition, we've refined, rewritten, and enhanced a number of things from ...
安卓导航抽屉 ...创建一个使用API 14: Android 4.0 (IceCreamSandwich)的新项目。 新项目应该有一个空白的活动。 创建操作栏 将菜单项添加到 ActionBar 创建 CreateCompanyActivity 将 ActionBar 添加到
兼容包实际上是为了让android 2.2、android 2.3 android 3.0支持android 4.0中才有的东西的。 比如说Actionbar。如果你不用兼容包的话,你开发含actionbar的程序就不可以在2.2上运行了 Support v11 v12 v13 v14 ...
从android 3.0开始,android加入了一个新的api,actoinbar,随着android 4.0的发布和慢慢的推广开来,很多应用也开始使用google推广的ui设计,而actionbar是其中相当重要的一部分。本人现在对IOS的那种设计有点厌烦,...
通过一个API和主题,开发者就可以很方便地使用所有版本的Android动作栏的设计模式。 对于Android 4.0及更高版本,ActionBarSherlock可以自动使用本地ActionBar实现,而对于之前没有 ActionBar功能的版本,基于Ice...
ActionBarSherlock是一个独立的库,旨在通过单个API促进在所有Android版本中使用操作栏设计模式。 该库将自动在Android 4.0或更高版本上使用本实现。 对于不包含ActionBar的早期版本,基于Ice Cream Sandwich来源...
动作条夏洛克ActionBarSherlock 是一个独立的库,旨在通过单个 API 促进在所有 Android 版本中使用操作栏设计模式。 该库将在 Android 4.0 或更高版本上自动使用本实现。 对于不包含 ActionBar 的先前版本,基于 Ice...
ActionBarSherlock是一个独立的库,旨在通过单个API促进在所有Android版本中使用操作栏设计模式。 该库将自动在Android 4.0或更高版本上使用本实现。 对于不包含ActionBar的早期版本,基于Ice Cream Sandwich来源...
ActionBarSherlock是一个独立的库,旨在通过单个API促进在所有Android版本中使用操作栏设计模式。 该库将自动在Android 4.0或更高版本上使用本实现。 对于不包含ActionBar的早期版本,基于Ice Cream Sandwich来源...