hel*_*sim 13 android android-appcompat material android-actionbar
我将ActionBarSherlock更改为AppCompat v7.我已经完成了使其工作所需的所有更改,但是使用共享图标(使用ShareActionProvider)发生了一些奇怪的事情.与其他图标相比,共享图标太大.我也使用支持库进行搜索,其大小正确.问题在于共享图标.
my_menu.xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:moblee="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/menu_share"
android:padding="10dp"
android:title="@string/menu_share"
moblee:actionProviderClass="android.support.v7.widget.ShareActionProvider"
moblee:showAsAction="always"/>
<item
android:id="@+id/menu_search"
android:title="@string/menu_search"
moblee:actionViewClass="android.support.v7.widget.SearchView"
moblee:showAsAction="always"/>
</menu>
Run Code Online (Sandbox Code Playgroud)
分段:
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.my_menu, menu);
MenuItem item = menu.findItem(R.id.menu_share);
ShareActionProvider shareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(item);
shareActionProvider.setShareIntent(getDefaultShareIntent());
}
Run Code Online (Sandbox Code Playgroud)
styles.xml
<style name="Theme.Custom" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/main_bar</item>
<item name="colorPrimaryDark">@color/main_bar</item>
<item name="actionBarItemBackground">@drawable/selectable_background_custom</item>
<item name="selectableItemBackground">@drawable/selectable_background_custom</item>
<item name="android:windowBackground">@color/background</item>
<item name="android:popupMenuStyle">@style/PopupMenu.Custom</item>
<item name="android:dropDownListViewStyle">@style/DropDownListView.Custom</item>
<item name="android:actionDropDownStyle">@style/DropDownNav.Custom</item>
<item name="android:actionModeBackground">@drawable/cab_background_top_custom</item>
<item name="android:actionModeSplitBackground">@drawable/cab_background_bottom_custom</item>
<item name="android:actionModeCloseButtonStyle">@style/ActionButton.CloseMode.Custom</item>
<item name="vpiTabPageIndicatorStyle">@style/VpiTabPageIndicator.Custom</item>
<item name="android:editTextBackground">@drawable/edit_text_holo_light</item>
<item name="android:listChoiceBackgroundIndicator">@drawable/list_selector_holo_light</item>
<item name="android:activatedBackgroundIndicator">@drawable/activated_background_holo_light</item>
<item name="android:fastScrollThumbDrawable">@drawable/fastscroll_thumb_holo</item>
<item name="android:listViewStyle">@style/ListViewCustom</item>
<item name="android:gridViewStyle">@style/GridViewCustom</item>
<item name="android:textViewStyle">@style/TextViewCustom</item>
<item name="android:checkboxStyle">@style/CheckBoxCustom</item>
</style>
<style name="PopupMenu.Custom" parent="@style/Widget.AppCompat.ListPopupWindow">
<item name="android:popupBackground">@drawable/menu_dropdown_panel_custom</item>
</style>
<style name="DropDownListView.Custom" parent="@style/Widget.AppCompat.ListView.DropDown">
<item name="android:listSelector">@drawable/selectable_background_custom</item>
</style>
<style name="Theme.Custom.Widget" parent="@style/Theme.AppCompat">
<item name="android:popupMenuStyle">@style/PopupMenu.Custom</item>
<item name="android:dropDownListViewStyle">@style/DropDownListView.Custom</item>
</style>
Run Code Online (Sandbox Code Playgroud)
ian*_*ake 13
材料设计中的图标为24dp x 24dp,正如所反映的那样SearchView
.但是,ShareActionProvider
默认情况下尚未更新为材料设计.
您可以actionModeShareDrawable
在主题中设置以在以下位置设置共享图标ShareActionProvider
:
<item name="actionModeShareDrawable">@drawable/share_icon</item>
Run Code Online (Sandbox Code Playgroud)
请注意,ShareActionProvider
在材料设计指南中没有找到任何地方,并且Android M的直接共享功能(此时需要您使用标准共享意图),目前还不清楚这是否ShareActionProvider
是建议的模式.
我最终使用的解决方案不再使用ShareContentProvider
,而是使用Intent.createChooser()
. 进行这些更改非常简单,它会打开新的共享对话框,如下所示:
操作栏中的共享图标:
对话:
菜单文件
<item
android:id="@+id/menu_share"
android:checkable="true"
android:icon="@drawable/ic_menu_share"
myapp:showAsAction="always"
android:title="@string/menu_share"/>
Run Code Online (Sandbox Code Playgroud)
片段类:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int itemId = item.getItemId();
if (itemId == R.id.menu_share) {
showShareDialog();
}
return super.onOptionsItemSelected(item);
}
private void showShareDialog(String message) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_SUBJECT, mTitle);
intent.putExtra(Intent.EXTRA_TEXT, mMessage);
startActivity(Intent.createChooser(intent, getString(R.string.menu_share)));
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1968 次 |
最近记录: |