我知道我的答案是晚了。但是我能夠繞過這個one這個基地。由於某種原因,AccountAuthenticatorActivity
似乎並沒有真正的ActionBar
。 ESP。當你想使用支持庫時,真的很難。
這是我如何做的:
你必須使用CoordinatorLayout
附上你的活動佈局:
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/coordinatorlayout_homescreen"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/background_login"
tools:context="com....LoginActivity">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsingtoolbarlayout_login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?android:attr/actionBarSize"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginStart="64dp"
app:expandedTitleMarginEnd="48dp"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar_login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
app:layout_collapseMode="pin"/>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
...
</android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>
正如你所看到的,我把一個AppBarLayout
按照該文檔,並有appcompat
版本的Toolbar
在這裏。稍後我們將分配此Toolbar
。
如果您願意讓CoordinatorLayout
就像沒有動畫協調滾動任何普通的活動,你可以設置的CollapsingToolbarLayout
屬性如下所示:
android:minHeight="?android:attr/actionBarSize"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
這將確保您的Toolbar
不會消失/ minHeight設置爲?android:attr/actionBarSize
時向上滾動。您可以檢出其行爲here。
下一頁您LoginActivity
延伸AccountAuthenticatorActivity
,你必須使用AppCompatDelegate
但在此之前,確保你LoginActivity實現AppCompatCallback
:
public class LoginActivity extends AccountAuthenticatorActivity
implements AppCompatCallback
{
...
private AppCompatDelegate mAppCompatDelegate;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
ButterKnife.bind(this);
...
mAppCompatDelegate = AppCompatDelegate.create(this, this);
mAppCompatDelegate.setSupportActionBar(mToolbarLogin);
ActionBar actionBar = mAppCompatDelegate.getSupportActionBar();
actionBar.setDisplayShowHomeEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setTitle(getString(R.string.activity_login));
mCollapsingToolbarLayoutLogin.setTitleEnabled(false);
}
有三種方法,你必須執行,但在我的研究,他們似乎這樣做沒有什麼花哨的ESP,如果你只是想表現出ActionBar
,所以在這個用例可以留空:
@Override
public void onSupportActionModeStarted(ActionMode mode)
{
}
@Override
public void onSupportActionModeFinished(ActionMode mode)
{
}
@Nullable
@Override
public ActionMode onWindowStartingSupportActionMode(ActionMode.Callback callback)
{
return null;
}
行mAppCompatDelegate = AppCompatDelegate.create(this, this);
請求第一個參數中的Activity
實例,第二個參數要求回調。
另外,還有一件事。如果您希望後退按鈕如此代碼所示,它不會響應點擊。您可能需要重寫它:
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch(item.getItemId())
{
case android.R.id.home:
onBackPressed();
break;
default:
return super.onOptionsItemSelected(item);
}
return true;
}
一個小怪癖,使用此我發現去的是狀態欄出現白色的一些設備。我仍在尋找如何解決它,但至少AccountAuthenticatorActivity
現在有一個ActionBar
。我不喜歡這個解決方案,因爲它可能會有點冒味。爲了實現Activity
的一個看似基本的行爲,很麻煩。
HTH