Search code examples
androidxmlbuttonubuntu-16.04android-studio-3.1.4

I would like to use the button style "Widget.Button.Transparent" in Android Studio


When I am going to use this button style, this message appears:

error: resource android:style/Widget.Button.Transparent is private.

Details about my system:

  • OS: Ubuntu 16.04 LTS
  • Android Studio 3.1.4 Build # AI-173.4907809, built on July 23, 2018
  • JRE: 1.8.0_152-release-1024-b01 amd64
  • JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
  • Linux 4.15.0-33-generic

Solution

  • Just make it yourself:

    In styles.xml (source):

    <style name="Widget.Button.Transparent">
        <item name="background">@drawable/btn_default_transparent</item>
        <item name="textAppearance">?attr/textAppearanceSmall</item>
        <item name="textColor">@color/white</item>
    </style>
    

    In btn_default_transparent.xml in your drawable folder (source):

    <?xml version="1.0" encoding="utf-8"?>
    <!-- Copyright (C) 2008 The Android Open Source Project
         Licensed under the Apache License, Version 2.0 (the "License");
         you may not use this file except in compliance with the License.
         You may obtain a copy of the License at
              http://www.apache.org/licenses/LICENSE-2.0
         Unless required by applicable law or agreed to in writing, software
         distributed under the License is distributed on an "AS IS" BASIS,
         WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
         See the License for the specific language governing permissions and
         limitations under the License.
    -->
    
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_pressed="true" 
            android:drawable="@drawable/btn_default_pressed" />
        <item android:state_focused="true" android:state_enabled="true"
            android:drawable="@drawable/btn_default_selected" />
        <item android:state_enabled="true"
            android:drawable="@drawable/btn_default_transparent_normal" />
    </selector>
    

    The drawables referenced in this are nine-patch PNGs, and in DPI-specific locations. You may be able to access them with @android:drawable/, but if not, this is the highest density I can find them at: https://github.com/aosp-mirror/platform_frameworks_base/tree/master/core/res/res/drawable-xhdpi/.