如何在Activity上使用Toolbar

如何在Activity上使用Toolbar

有時候你的程式是很久以前寫的, 主要的程式都是Activity,
這時候你又想要改成Toolbar該怎麼辦呢?
其實不困難, 你可以透過實作AppCompatCallback介面來達成。

public class MainActivity extends Activity implements AppCompatCallback {
    private Toolbar mToolbar;
    private AppCompatDelegate mDelegate;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mDelegate = AppCompatDelegate.create(this, this);
        mDelegate.onCreate(savedInstanceState);
        mDelegate.setContentView(R.layout.activity_main);
        initView();
    }

    private void initView() {
        mToolbar = (Toolbar) findViewById(R.id.toolbar);
        mDelegate.setSupportActionBar(mToolbar);
    }

    @Override
    public void onSupportActionModeStarted(ActionMode mode) {

    }

    @Override
    public void onSupportActionModeFinished(ActionMode mode) {

    }

    @Nullable
    @Override
    public ActionMode onWindowStartingSupportActionMode(ActionMode.Callback callback) {
        return null;
    }
}

只要把xml加入toolbar

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.givemepass.activitytoolbardemo.MainActivity">

    <android.support.v7.widget.Toolbar
        android:background="?attr/colorPrimary"
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:titleTextColor="@android:color/white"
        android:layout_height="?android:attr/actionBarSize" >

    </android.support.v7.widget.Toolbar>
</RelativeLayout>

就可以看到我們熟悉的Toolbar惹

需要更詳細的說明可以參考
How to add Toolbar to an Activity which doesn’t extend AppCompatActivity

程式碼
github