扩展活动时的工具栏

Mar*_*tti 0 android android-appcompat android-activity android-actionbar android-toolbar

我需要扩展Activity而不是ActionBarActivity或AppCompatActivity才能使用第三方库.

在所有应用程序中,我一直在使用AppCompatActivity以便在其中轻松添加工具栏,但是如果我扩展Activity,显然我不能这样做.我也很高兴有一个ActionBar:它不一样,但它总比没有好.不过,我不知道怎么做: - /

你对我有什么建议吗?我知道这可能是一个愚蠢的问题,但我只是不知道如何使这项工作......

Gab*_*tti 5

首先检查您正在使用的库.它可能已经过时了.

使用新的22.1+ appcompat,您可以使用AppCompatDelegate将AppCompat的支持扩展到任何Activity.

您可以查看AppCompatPreferenceActivity的官方链接,您可以在其中找到此技术的示例.

你有 :

  • 添加Toolbar到您的Activity:

像这样的东西:

<android.support.v7.widget.Toolbar
    android:id="@+id/mytoolbar"
    android:background="?attr/colorPrimary"/>
Run Code Online (Sandbox Code Playgroud)
  • 使用AppCompat Theme没有ActionBar.

这样的事情:

  <style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
        <item name="colorPrimary">@color/myColor</item>
        ....
    </style>
Run Code Online (Sandbox Code Playgroud)
  • 加入AppCompatDelegate你的Activity

就像是:

public class MainActivity extends Activity implements AppCompatCallback {

      private AppCompatDelegate delegate;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            //create the delegate        
            delegate = AppCompatDelegate.create(this, this);

            //call the onCreate() of the AppCompatDelegate
            delegate.onCreate(savedInstanceState);

            //use the delegate to inflate the layout
            delegate.setContentView(R.layout.activity_main);

            //add the Toolbar
            Toolbar toolbar= (Toolbar) findViewById(R.id.mytoolbar);
            delegate.setSupportActionBar(toolbar);
        }

   //.....
}
Run Code Online (Sandbox Code Playgroud)

检查官方示例以包装Activity的其他方法以与AppCompatActivity完全兼容.