ActionBar入门(1)

(1)简单创建一个ActionBar

1.   3.0(版本11)以及以上的版本默认使用的主题(Themes是Theme.Holo),

       所以只要这样就行了。

<manifest ... >
    <uses-sdk android:minSdkVersion="11" ... />
    ...
</manifest>

    (如果版本是11以及以上的,想要自己创建一个定制主题,要用Theme.Holo作为父主题)

2. 支持2.1以及以上的,要用到支持包,v7支持包

    注意事项:

    (1)Activity必须继承于ActionBarActivity

public class MainActivity extends ActionBarActivity { ... }

    (2)在manifest文件中,改<application>或者是<activity>中的主题,为   Theme.AppCompat  

<activity android:theme="@style/Theme.AppCompat.Light" ... >

这样就可以在更低的版本中,直接使用ActionBar了。

(2)在XML中添加ActionBar的Button

3.0以及3.0以上的xml布局:

<span style="font-size:14px;"><menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <!-- Search, should appear as action button -->
    <item android:id="@+id/action_search"
          android:icon="@drawable/ic_action_search"
          android:title="@string/action_search"
          android:showAsAction="ifRoom" />
    <!-- Settings, should always be in the overflow -->
    <item android:id="@+id/action_settings"
          android:title="@string/action_settings"
          android:showAsAction="never" />
</menu></span>

如果有空间就显示:

<span style="font-size:14px;">android:showAsAction="ifRoom"</span>
永远显示在点点的点击之后的界面中:(默认是这样的,显示在溢出的界面中)

<span style="font-size:14px;">android:showAsAction="never"</span>

用支持包的xml布局

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
    <!-- Search, should appear as action button -->
    <item android:id="@+id/action_search"
          android:icon="@drawable/ic_action_search"
          android:title="@string/action_search"
          yourapp:showAsAction="ifRoom"  />
    ...
</menu>
今天看了文档,我才知道

xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:yourapp="http://schemas.android.com/apk/res-auto"
这两句是干嘛用的。。(深深无奈)

第一句是Android的默认资源包xml的命名空间,所以下面可以用android:了

第二句是自己的xml命名空间 yonrapp是特定的前缀,所以可以用yourapp:了

(3)添加Actions到ActionBar中

重写Activity中的onCreateOptionsMenu方法

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu items for use in the action bar
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main_activity_actions, menu);
    return super.onCreateOptionsMenu(menu);
}

(4)响应Action Button点击事件

<span style="font-family:SimSun;font-size:10px;">@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle presses on the action bar items
    switch (item.getItemId()) {
        case R.id.action_search:
            openSearch();
            return true;
        case R.id.action_settings:
            openSettings();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}</span>

(5)添加回退Button返回主Activity

不是每一个Activity都是程序的入口Activity,有时候,点击返回的时候,想要回退到主界面之类的

在配置清单中:

<application ... >
    ...
    <!-- The main/home activity (it has no parent activity) -->
    <activity
        android:name="com.example.myfirstapp.MainActivity" ...>
        ...
    </activity>
    <!-- A child of the main activity -->
    <activity
        android:name="com.example.myfirstapp.DisplayMessageActivity"
        android:label="@string/title_activity_display_message"
        android:parentActivityName="com.example.myfirstapp.MainActivity" >
        <!-- Parent activity meta-data to support 4.0 and lower -->
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.myfirstapp.MainActivity" />
    </activity>
</application>

代码中设置为点击返回的那个Button可以返回到父Activity:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_displaymessage);

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    // If your minSdkVersion is 11 or higher, instead use:
    // getActionBar().setDisplayHomeAsUpEnabled(true);
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值