[英]How to add a Floating Action Button, without AppCompat?
我正在尋找一個新的應用程序,只使用API 21。
要遵循Material Design,我正在嘗試使用FAB,但是我找不到任何關於如何使用現在包含在設計庫中的信息的正確信息。
到目前為止,我已經在庫中添加了build.gradle文件,並在我的視圖中添加了一個FAB(下面的代碼)
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:src="@android:drawable/ic_menu_add"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
app:elevation="5dp"
app:borderWidth="0dp"
app:fabSize="mini"/>
(這是在RelativeLayout中)
當我啟動應用程序時,我得到:
android.view.InflateException:二進制XML文件行#15:錯誤膨脹類android.support.design.widget.FloatingActionButton
我在SO上找到了一個答案,說我需要使用AppCompat主題,但我寧願只使用純Material / API21。
如何在沒有AppCompat(支持庫)的情況下使用FAB?
FAB內置於新的Design Compat庫中 - 它早在API 7上就可以在設備上運行。您需要將其作為依賴項使用它(並且應該毫不猶豫地這樣做)。
如果要避免使用庫(或任何外部代碼),則需要自己繪制FAB(使用Shape Drawable)。
底線,使用Design Compat lib是支持FAB的首選方法,您應該使用它。 Design Compat lib是“pure / Material API21 stuff”。
除了Design支持庫中的API之外,沒有為任何API實現FAB實現。 您必須包含lib,或者完全自己實現代碼。
Design lib依賴於AppCompat,因此如果您計划使用本機fab,則還需要包含AppCompat的依賴項。
來自官方博客文章 :“ 請注意,由於設計庫依賴於Support v4和AppCompat支持庫,因此在添加Design庫依賴項時將自動包含這些庫。 ”
Material Design庫與AppCompat具有依賴關系。 檢查@Booger的答案。 它報道了官方博客。
如何使用FAB。
將依賴項添加到build.gradle
:
compile 'com.android.support:design:22.2.0'
只需將FAB添加到您的設計中:
<android.support.design.widget.FloatingActionButton
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|right"
android:src="@drawable/ic_add"
android:layout_marginBottom="@dimen/fab_margin_bottom"
android:layout_marginRight="@dimen/fab_margin_right"
app:elevation="6dp"
app:borderWidth="0dp"
app:fabSize="normal" />
目前存在一些錯誤。
您必須定義app:borderWidth="0dp"
以使用API21 +顯示陰影。
此外,您還必須為API 21+和舊設備定義不同的邊距。
RES /值/ dimens.xml
<dimen name="fab_margin_right">0dp</dimen>
<dimen name="fab_margin_bottom">0dp</dimen>
RES /值-V21 / dimens.xml
<dimen name="fab_margin_right">16dp</dimen>
<dimen name="fab_margin_bottom">16dp</dimen>
FAB使用強調顏色,您可以使用app:backgroundTint
屬性覆蓋。
最后,您可以使用以下命令設置ClickListener:
fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//do something
}
});
在GitHub上還有幾個流行的庫:
FloatingActionButton可以展開/折疊為菜單以顯示多個動作。
我想雖然您打算僅在API21上提供您的應用程序,但我鼓勵您使用Android支持庫AppCompat-v7實現您的應用程序。 你會得到很多好處。
無論如何,這是你的選擇。 只是我的建議。 但如果你確信。 或者查看有關如何使用Android設計支持庫的完整教程。 http://inthecheesefactory.com/blog/android-design-support-library-codelab/en
希望這有幫助
其實我遇到了同樣的問題。 解決方案非常簡單:您必須定義app:rippleColor="@color/colorPrimary"
,您可以在不使用Appcompat主題和活動的情況下使用FAB。 當然你必須包括compile 'com.android.support:support-v4:25.3.1'
並compile 'com.android.support:design:25.3.1'
但你不必使用AppCompatActivity
和那些主題。
<android.support.design.widget.FloatingActionButton
android:id="@+id/action_add_palette"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="16dp"
android:src="@android:drawable/ic_input_add"
app:rippleColor="@color/colorPrimary" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.