大佬教程收集整理的这篇文章主要介绍了android – 如何使style =“?attr / actionButtonStyle”适用于矩形工具栏按钮,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
actionbar_custom_view_done_discard.xml
<LinearLayout xmlns:android="http://scheR_958_11845@as.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <include layout="@layout/actionbar_discard_button" /> <View android:layout_width="1px" android:layout_height="match_parent" android:layout_marginTop="12dp" android:layout_marginBottom="12dp" android:BACkground="?attr/actionBarCustomViewDividerColor" /> <include layout="@layout/actionbar_done_button" /> </LinearLayout>
actionbar_done_button.xml
<FrameLayout xmlns:android="http://scheR_958_11845@as.android.com/apk/res/android" style="?attr/actionButtonStyle" android:id="@+id/actionbar_done" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1"> <TextView style="?attr/actionBarTabTextStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:paddingRight="20dp" android:drawableLeft="?attr/actionBarDoneIcon" android:drawablePadding="8dp" android:gravity="center_vertical" android:text="@String/save" /> </FrameLayout>
StockAlertFragmentActivity.java
public class StockAlertFragmentActivity extends SherlockFragmentActivity { @Override public void onCreate(Bundle savedInstanceStatE) { super.onCreate(savedInstanceStatE); // Inflate a "Done/Discard" custom action bar view. LayoutInflater inflater = (LayoutInflater) this.getSupportActionBar().getThemedContext() .getSystemservice(LAYOUT_INFLATER_serviCE); final View customActionBarView = inflater.inflate( R.layout.actionbar_custom_view_done_discard,null);
当我们点击SAVE按钮时,结果如下.
但是,在将@R_303_9616@程序迁移到材料设计的应用程序(targetSdkVersion 23,主题Theme.AppCompat.Light.NoActionBar)后,系统属性attr / actionButtonStyle不再适用于矩形按钮.
toolbar_with_save_discard.xml
<android.support.v7.widget.Toolbar xmlns:android="http://scheR_958_11845@as.android.com/apk/res/android" xmlns:app="http://scheR_958_11845@as.android.com/apk/res-auto" android:id="@+id/toolbar" android:layout_height="wrap_content" android:layout_width="match_parent" android:minHeight="?attr/actionBarSize" android:BACkground="?attr/colorPriMary" android:elevation="4dp" android:contenTinsetLeft="0dp" android:contenTinsetStart="0dp" app:contenTinsetLeft="0dp" app:contenTinsetStart="0dp" android:contenTinsetright="0dp" android:contenTinsetEnd="0dp" app:contenTinsetright="0dp" app:contenTinsetEnd="0dp" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" > <!-- android:elevation="4dp" is used due to http://www.google.com/design/spec/what-is-material/elevation-shadows.html#elevation-shadows-elevation-android- --> <LinearLayout android:id="@+id/buttons_linear_layout" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:orientation="horizontal"> <include layout="@layout/toolbar_discard_button" /> <View android:layout_width="1px" android:layout_height="match_parent" android:layout_marginTop="12dp" android:layout_marginBottom="12dp" android:BACkground="?attr/toolbarCustomViewDividerColor" /> <include layout="@layout/toolbar_save_button" /> </LinearLayout> </android.support.v7.widget.Toolbar>
toolbar_save_button.xml
<FrameLayout xmlns:android="http://scheR_958_11845@as.android.com/apk/res/android" style="?attr/actionButtonStyle" android:id="@+id/toolbar_save" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1"> <TextView style="?attr/actionBarTabTextStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:paddingRight="20dp" android:drawableLeft="?attr/toolbarDoneIcon" android:drawablePadding="8dp" android:gravity="center_vertical" android:text="@String/save" /> </FrameLayout>
@L_874_8@
我喜欢在整个矩形SAVE按钮上绘制叠加层.
我想我最有可能通过避免使用style =“?attr / actionButtonStyle”并提供我自己定义的选择器来解决这个问题.
但是,我不想这样做.我更喜欢使用系统提供的样式,以减少维护头痛.
如何使style =“?attr / actionButtonStyle”适用于矩形工具栏按钮?
或者,是否有任何其他系统样式属性,这将适用于矩形工具栏按钮?同时,有涟漪效应.
<style name="Widget.Material.ActionButton"> <item name="BACkground">?attr/actionBarItemBACkground</item> <item name="paddingStart">12dp</item> <item name="paddingend">12dp</item> <item name="minWidth">@dimen/action_button_min_width_material</item> <item name="minHeight">@dimen/action_button_min_height_material</item> <item name="gravity">center</item> <item name="scaleType">center</item> <item name="maxLines">2</item> </style>
后台设置为actionBarItemBACkground,后者又指向此RippleDrawable:
<ripple xmlns:android="http://scheR_958_11845@as.android.com/apk/res/android" android:color="?attr/colorControlHighlight" android:radius="20dp" />
半径值是您不想要的.
要解决此问题,请在应用主题下覆盖actionBarItemBACkground:
<style name="AppTheme" parent="...."> .... <item name="actionBarItemBACkground">@drawable/custom_action_bar_item_bg</item> <item name="android:actionBarItemBACkground">@drawable/custom_action_bar_item_bg</item> </style>
drawable custom_action_bar_item_bg将定义为:
RES /抽拉/ custom_action_bar_item_bg.xml
<?xml version="1.0" encoding="utf-8"?> <SELEctor xmlns:android="http://scheR_958_11845@as.android.com/apk/res/android"> <item android:state_pressed="true"> <color android:color="#...."/> </item> <item> <color android:color="@android:color/transparent"/> </item> </SELEctor>
RES /抽拉-V21 / custom_action_bar_item_bg.xml
<ripple xmlns:android="http://scheR_958_11845@as.android.com/apk/res/android" android:color="?attr/colorControlHighlight"> <item android:id="@id/mask"> <color android:color="@android:color/white" /> </item> </ripple>
在API版本>的情况下,掩码将为您提供矩形. 21.
缺点:使用actionBarItemBACkground的所有项目都将受到影响(除非这没关系).要解决此问题,您可以在FrameLayout包装器上创建单独的主题.例如,这是您的应用程序的主题:
<style name="AppTheme" parent="...."> .... .... </style>
<style name="SELEctiveActionBarButtonTheme" parent="AppTheme"> <item name="actionBarItemBACkground">@drawable/custom_action_bar_item_bg</item> <item name="android:actionBarItemBACkground">@drawable/custom_action_bar_item_bg</item> </style>
要使用它,请在包装器FrameLayout上覆盖android:theme:
<FrameLayout xmlns:android="http://scheR_958_11845@as.android.com/apk/res/android" style="?attr/actionButtonStyle" android:id="@+id/toolbar_save" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:theme="@style/SELEctiveActionBarButtonTheme"> .... .... </FrameLayout>
当然,最简单的方法是将FrameLayout的android:BACkground设置为?attr / SELEctableItemBACkground,并完成它.
以上是大佬教程为你收集整理的android – 如何使style =“?attr / actionButtonStyle”适用于矩形工具栏按钮全部内容,希望文章能够帮你解决android – 如何使style =“?attr / actionButtonStyle”适用于矩形工具栏按钮所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。