Android Фон кнопки не распознается / не используется отрисовка - PullRequest
0 голосов
/ 07 января 2020

Я хочу добавить фон для кнопки, как я уже делал несколько раз. У меня есть файл ресурсов для рисования с соответствующим фоном. Однако, если я сошлюсь на это, он не будет принят, вместо этого в качестве фона будет использоваться только один цвет. У меня было подозрение, что это может быть ошибкой в ​​моих стилях. xml но в них ничего не называют слишком раскрашенными. Какие могут быть причины, по которым Android Studio не распознает фон, или где я мог бы определить общую тему о том, как должны выглядеть кнопки? Я не могу вспомнить что-то подобное. Я пробовал что-то похожее с EditText, у меня здесь не было проблем, поэтому я думаю, что это специфическая c проблема с кнопкой. Также, если я изменю цвет фона на обычный, он ничего не изменит и по-прежнему будет отображаться темно-синим цветом.

Обновление: если я изменяю стиль предварительного просмотра (верхняя средняя часть предварительного просмотра) на DialogStyle, фон кнопки работает , Как это может быть, если в стилях дер ничего не определено?

Обновление: на этот раз я добавил новую версию своей кнопки, инициализируя фон в дополнительном стиле. Результат состоит в том, что это все еще не показывает правильный цвет. Я тоже пробовал с черным, но ничего не произошло.

Спасибо за любую помощь.

Кнопка

<Button
                android:id="@+id/buttonRegistrieren"
                android:layout_width="232dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical|center_horizontal"
                android:layout_marginTop="20dp"
                android:layout_marginBottom="5dp"
                android:background="@drawable/btnbackground"
                android:onClick="WriteData"
                android:text="@string/Registrieren"
                android:textAllCaps="false"
                android:textColor="@color/colorWhite"
                android:textSize="16dp"></Button>

Стили. xml

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
        <!-- Customize your theme here. -->

    </style>

    <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>

    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />

    <style name="ToolbarColoredBackArrow" parent="AppTheme">
        <item name="android:textColorSecondary">@android:color/black</item>
    </style>

    <style
        name="SplashTheme"
        parent="AppTheme">
        <item name="android:windowFullscreen">true</item>
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>
<style name="ButtonStyle" parent="android:style/Widget.Button">
        <item name="android:textSize">19sp</item>
        <item name="android:textColor">@color/colorWhite</item>
        <item name="android:background">@color/colorBlack</item>
    </style>



    <style
        name="SecondTheme"
        parent="AppTheme">
        <item name="android:windowFullscreen">false</item>
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>

    <style name="DialogStyle" parent="Theme.Design.Light.BottomSheetDialog">
        <item name="android:windowIsFloating">false</item>
        <item name="android:statusBarColor">@android:color/transparent</item>
        <item name="android:windowSoftInputMode">adjustResize</item>
    </style>

</resources>

btnbackground. xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <gradient
        android:angle="135"
        android:centerColor="#FF5256AC"
        android:endColor="#FF662D91"
        android:startColor="#FF29ABE2"
        android:type="linear" />


    <corners android:radius="150dp">

    </corners>

</shape>

Кнопка с темой

<Button
        android:id="@+id/buttonLogin"
        android:layout_width="160dp"
        android:layout_height="45dp"
        android:layout_marginStart="8dp"
        android:layout_marginEnd="8dp"
        android:text="Anmelden"
        android:textAllCaps="true"
        android:textColor="@color/colorWhite"
        android:textSize="16sp"
        android:theme="@style/ButtonStyle"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.497"
        app:layout_constraintStart_toStartOf="parent"
        tools:layout_editor_absoluteY="426dp"
        />

Манифест

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="edmt.dev.androideatitv2client">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        tools:replace="android:theme">
        <activity android:name=".PasswordActivity"></activity>
        <activity android:name=".LoginActivity" />
        <activity android:name=".RegistrationActivity" />
        <activity android:name=".SplashActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        </activity>
        <activity android:name=".UpdatePasswordActivity" />
        <activity android:name=".UpdateProfileActivity" />
        <activity android:name=".ProfileActivity" />

        <activity
            android:name=".HomeActivity"
            android:label="@string/title_activity_home"
            android:theme="@style/AppTheme.NoActionBar" />

        <service android:name=".services.MyFCMServices">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT" />
            </intent-filter>
        </service>
    </application>

</manifest>

Ответы [ 2 ]

2 голосов
/ 15 января 2020

Вы должны добавить Width и Height к вашему Shape в

btnbackground. xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:shape="rectangle">

<gradient
    android:angle="135"
    android:centerColor="#FF5256AC"
    android:endColor="#FF662D91"
    android:startColor="#FF29ABE2"
    android:type="linear" />


<corners android:radius="150dp">

</corners>

Если вы не Чтобы использовать AndroidX, вам нужно изменить тему с Theme.MaterialComponents.Light.NoActionBar на Theme.AppCompat.Light.NoActionBar

Стили. xml

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->

</style>

<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />

<style name="ToolbarColoredBackArrow" parent="AppTheme">
    <item name="android:textColorSecondary">@android:color/black</item>
</style>

<style
    name="SplashTheme"
    parent="AppTheme">
    <item name="android:windowFullscreen">true</item>
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>
<style name="ButtonStyle" parent="android:style/Widget.Button">
    <item name="android:textSize">19sp</item>
    <item name="android:textColor">#fff</item>
    <item name="android:background">#000</item>
</style>



<style
    name="SecondTheme"
    parent="AppTheme">
    <item name="android:windowFullscreen">false</item>
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

<style name="DialogStyle" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowIsFloating">false</item>
    <item name="android:statusBarColor">@android:color/transparent</item>
    <item name="android:windowSoftInputMode">adjustResize</item>
</style>

Кнопка

 <Button
    android:id="@+id/buttonLogin"
    android:layout_width="160dp"
    android:layout_height="45dp"
    android:layout_marginStart="8dp"
    android:layout_marginEnd="8dp"
    android:text="Anmelden"
    android:textAllCaps="true"
    android:textColor="#fff"
    android:textSize="16sp"
    android:theme="@style/ButtonStyle"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.497"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

вот результат: enter image description here

0 голосов
/ 08 января 2020

Вы пытались изменить вид с Button на ImageButton?

...