Android 3.0: не может стилизовать кнопки элемента действий панели действий - PullRequest
1 голос
/ 24 ноября 2011

Вот руководство разработчика по теме http://developer.android.com/guide/topics/ui/actionbar.html#ActionItems

Итак, мы имеем в деятельности

public class MyActivity extends Activity {

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
    super.onCreateOptionsMenu(menu);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.my_menu, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item)
{
    switch (item.getItemId())
    {
    case R.id.first_menu_button:
        return true;
    case R.id.second_menu_button:
        return true;

    default:
        return super.onOptionsItemSelected(item);
    }
}

Где R.menu.my_menu

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/first_menu_button"
        android:showAsAction="always"
        android:icon="@drawable/btn_first"/>
    <item
        android:id="@+id/second_menu_button"
        android:showAsAction="always"
        android:icon="@drawable/btn_second"/>
</menu>

Чтобы стилизовать эти кнопки http://developer.android.com/guide/topics/ui/actionbar.html#ActionItemStyles, мы должны использовать атрибут android: actionButtonStyle. Я сделал это так:

В манифесте:

<activity android:name="com.root.test.MyActivity"
    android:theme="@style/CustomActionBarStyle"
</activity>

В styles.xml:

<style name="CustomActionBarStyle" parent="@android:style/Theme.Holo.Light">
    <item name="android:actionButtonStyle">@style/customActionButtonStyle</item>
    <item name="android:windowActionBar">true</item>
    <item name="android:windowNoTitle">false</item>   
</style>

<style name="customActionButtonStyle" parent="@android:style/Widget.Holo.Light.ActionButton">
    <item name="android:[...]
</style>

Проблема в том, что все, что я пишу в customActionButtonStyle, просто игнорирует это. Другие атрибуты в CustomActionBarStyle работах (даже более сложных, они просто опущены ради простоты). Моей главной целью было установить пользовательские отступы. Есть ли другой способ сделать это, как и любой другой, не android:actionButtonStyle атрибут? Или кто-то знает, как получить эту работу? (android: атрибут abItemPadding добавлен только в версии 3.1)

Спасибо.

Ответы [ 2 ]

4 голосов
/ 09 мая 2012

Если вы хотите изменить параметры текста, такие как размер, цвет или стиль текста, вы должны использовать actionMenuTextAppearance. Вот мой код для ActionBarSherlock:

<item name="actionMenuTextAppearance">@style/MyProject.ActionMenuTextAppearance</item>
<item name="android:actionMenuTextAppearance">@style/MyProject.ActionMenuTextAppearance</item>

...

<style name="MyProject.ActionMenuTextAppearance" parent="TextAppearance.Sherlock.Widget.ActionBar.Menu">
    <item name="android:textSize">15sp</item>
    <item name="android:textStyle">normal</item>
    <item name="android:textAllCaps">false</item>
</style>

РЕДАКТИРОВАТЬ: Это мой шаблон для стиль действий панели с ActionBarSherlock: https://github.com/petrnohejl/Android-Templates-And-Utilities/tree/master/Res-Theme-Holo-Deprecated

0 голосов
/ 26 ноября 2011

Большинство элементов стиля будут работать, но заполнение обеспечивается системными макетами, используемыми для генерации кнопок действий, и, вероятно, не будет выполнять то, что вы ожидаете.Большинство метрик панели действий, таких как отступы и поля, как правило, следует оставить в покое для согласованности UX.Даже отмеченный вами атрибут заполнения элемента предназначен для приложений, которые могут захотеть использовать его для стилизации своих собственных представлений настраиваемых действий.

...