it-swarm.com.ru

Android как получить тему типа AppCompat.Translucent с поддержкой панели действий?

Я хотел бы добавить панель действий поддержки к одному из моих действий, ранее я использовал theme.translucent с этим действием, но для того, чтобы заставить панель действий поддержки работать, мне нужно было наследовать Theme.AppCompat, мне нужно поддерживать полупрозрачный тема в этом упражнении, но, к сожалению, нет Theme.AppCompat.translucent, который я вижу по умолчанию, есть ли способ сделать это?

60
Edmund Rojas

Вы можете создать новый набор стилей, которые будут иметь те же свойства, что и Theme.Translucent из themes.xml .

Добавьте следующее в ваш файл styles.xml:

<style name="Theme.AppCompat.Translucent">
    <item name="Android:windowNoTitle">true</item>
    <item name="Android:windowBackground">@Android:color/transparent</item>
    <item name="Android:colorBackgroundCacheHint">@null</item>
    <item name="Android:windowIsTranslucent">true</item>
    <item name="Android:windowAnimationStyle">@Android:style/Animation</item>
</style>

Вы можете изменить префикс Theme.AppCompat на что-то другое, если вы хотите наследовать другие элементы из темы, такие как стили диалогов и т.д. Например, имя, подобное Theme.AppCompat.Light.Translucent, будет иметь свойства темы Light.

Чтобы использовать новый стиль, установите для свойства темы значение @style/Theme.AppCompat.Translucent

<activity
    Android:name=".TranslucentActivity"
    Android:theme="@style/Theme.AppCompat.Translucent" >
</activity>
144
Cameron Ketcham

Парама,

<style name="Theme.AppCompat.Translucent" parent="Theme.AppCompat.NoActionBar">
        <item name="Android:windowNoTitle">true</item>
        <item name="Android:windowBackground">@Android:color/transparent</item>
        <item name="Android:colorBackgroundCacheHint">@null</item>
        <item name="Android:windowIsTranslucent">true</item>
        <item name="Android:windowAnimationStyle">@Android:style/Animation</item>
    </style>

Это должен быть заголовок стиля, если вы хотите, чтобы панель инструментов исчезла. Вы можете использовать любую родительскую тему, которая имеет NoActionBar для других эффектов.

Надеюсь это поможет

36
Dhaval Chheda

Если мы используем прозрачный для прозрачной деятельности. Это поднимает другие проблемы - цвет Msgbox (теперь белый, ранее черный), цвет диалога по умолчанию, счетчики выпадающие, но не показывают подчеркивание и стрелку раскрывающегося списка. Блесны цвет черный, текст черный; выпадающий белый выпадающий текст черный и т. д. Чтобы преодолеть эту проблему, вы можете просто использовать приведенный ниже код

в стиле

<style name="Theme.AppCompat.Transparent.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="Android:windowIsTranslucent">true</item>
    <item name="Android:windowBackground">@Android:color/transparent</item>
 <item name="Android:windowContentOverlay">@null</item>
    <item name="Android:windowNoTitle">true</item>
    <item name="Android:windowIsFloating">false</item>
    <item name="Android:backgroundDimEnabled">false</item>
</style>

в файле манифеста

<activity
        Android:name=".activity.YourActivityName"
        Android:theme="@style/Theme.AppCompat.Transparent.NoActionBar" />

Надеюсь это поможет спасибо

4
Monika

Ответ Кэмерон: Хороший взлом , но он выдает плавающую панель действий и окрашивает мою строку состояния, чего я не хотел. Поэтому я добавил дополнительные атрибуты xml для прозрачности строки состояния (для sdk> = 19) и использовал код Java, чтобы сделать панель действий невидимой.

mainActivity.Java:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getSupportActionBar().hide();
     ...
    }
     ...
}

styles.xml

<style name="AppTheme.TranslucentBG">
    <item name="Android:windowNoTitle">true</item>
    <item name="Android:windowBackground">@Android:color/transparent</item>
    <item name="Android:colorBackgroundCacheHint">@null</item>
    <item name="Android:windowIsTranslucent">true</item>
    <item name="Android:windowAnimationStyle">@Android:style/Animation</item>

    <item name="Android:windowTranslucentStatus">true</item>
    <item name="Android:windowTranslucentNavigation">true</item>

</style>

manifest.xml

<application
    Android:icon="@mipmap/ic_launcher"
    ...
    Android:theme="@style/AppTheme"
    ...
    >


    <activity Android:name=".MainActivity"
        Android:theme="@style/AppTheme.TranslucentBG"
        ...
        >
        ...
    </activity>
</application>
2
ansh sachdeva