1

Я пытаюсь использовать ShareActionProvider в своем приложении для Android. Сначала я попытался использовать значение по умолчанию ShareActionProvider. Но, к сожалению, я нашел, что Android не предоставляет никакого способа изменить цвет значка общего доступа.ShareActionProvider ActionBarSherlock - удаление лишнего пространства

Так что я использую ActionBarSherlock. Мне удалось изменить фон, но я не могу удалить пробелы вокруг пункта меню и поставщика акций.

Во-вторых, значок правой истории.

Пожалуйста, помогите.

Адрес источника.

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setTheme(R.style.MyApp); 
    setContentView(R.layout.activity_fullscreen); 

    ActionBar actionBar = getSupportActionBar(); 
    actionBar.setHomeButtonEnabled(false); 
    actionBar.setDisplayShowHomeEnabled(false); 
    LayoutInflater inflator = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View custom = inflator.inflate(R.layout.actionbar_view, null); 
    actionBar.setCustomView(custom); 
    actionBar.setDisplayShowTitleEnabled(false); 
    actionBar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_CUSTOM); 
    actionBar.setDisplayShowCustomEnabled(true); 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    getSupportMenuInflater().inflate(R.menu.menu, menu); 

    MenuItem actionItem = menu.findItem(R.id.share_action_provider); 
    ShareActionProvider actionProvider = (ShareActionProvider) actionItem.getActionProvider(); 
    actionProvider.setShareHistoryFileName(null); 

    actionProvider.setShareIntent(createShareIntent()); 

    return true; 
} 

Мой стиль

<style name="MyApp" parent="Theme.Sherlock.Light.DarkActionBar"> 
<item name="windowActionBarOverlay">true</item> <!-- for ActionBarSherlock --> 
</style> 

Мое меню XML

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" > 
<item android:id="@+id/contest" 
    android:showAsAction="always" 
    android:icon="@drawable/contest" /> 
<item android:id="@+id/share_action_provider" 
    android:showAsAction="always" 
    android:actionProviderClass="com.actionbarsherlock.widget.ShareActionProvider" /> 
</menu> 

Мой заказ Просмотр

<RelativeLayout 
android:id="@+id/actionLayout" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 
    <ImageView 
    android:id="@+id/homeIcon" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/home_button_background" 
    android:layout_alignParentLeft="true" 
    android:onClick="onHomeClick"> 
    </ImageView> 
</RelativeLayout> 

Вот скриншот.

enter image description here

+0

Вам нужно удалить значок справа (самый выбранный значок), не так ли? Вам нужно проверить эти советы: http://stackoverflow.com/questions/10706564/how-do-you-turn-off-share-history-when-using-shareactionprovider - и в основном http://stackoverflow.com/a/17290249/2668136 - http://stackoverflow.com/a/20550542/2668136 Для пространства вокруг значка я ничего не нашел, но как только исчезнет ваша правая иконка, вы не сможете пробежать. – Fllo

ответ

0

Вам необходимо внести изменения в стиле по умолчанию, как указано ниже:

<style name="MyApp" parent="Theme.Sherlock.Light.DarkActionBar"> 
<item name="windowActionBarOverlay">true</item> <!-- for ActionBarSherlock --> 

<!-- add following items --> 
    <item name="actionButtonStyle">@style/CustomActionButtonStyle</item> 
    <item name="android:actionButtonStyle">@style/CustomActionButtonStyle</item> 
</style> 

<style name="CustomActionButtonStyle" parent="Widget.Sherlock.ActionButton"> 
    <item name="android:minWidth">32dip</item> 
    <item name="android:padding">0dip</item> 
</style> 

Причиной этого вопроса является значением по умолчанию android:minWidth для ActionBar кнопок, является 56dip, так что вам нужно изменить его.

Надеюсь, это будет полезно!

Смежные вопросы