Reputation: 9732
Below are my dependencies
implementation 'com.google.android.material:material:1.0.0'
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
My layout.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff"
android:fitsSystemWindows="true">
<com.google.android.material.bottomappbar.BottomAppBar
android:id="@+id/bottomBar"
style="@style/Widget.MaterialComponents.BottomAppBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:backgroundTint="@color/colorPrimary"
app:fabAlignmentMode="center"
app:fabCradleMargin="10dp"
app:fabCradleVerticalOffset="4dp"
app:navigationIcon="@drawable/ic_drawer" >
</com.google.android.material.bottomappbar.BottomAppBar>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_anchor="@id/bottomBar"
app:srcCompat="@drawable/ic_apps" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
The Above code is working fine for me
But when i update the dependencies
of material design
implementation 'com.google.android.material:material:1.1.0-alpha01'
I'm getting below error:
java.lang.RuntimeException: Unable to start activity ComponentInfo{neel.com.bottomappbar/neel.com.bottomappbar.MainActivity}: android.view.InflateException: Binary XML file line #11: Binary XML file line #11: Error inflating class com.google.android.material.bottomappbar.BottomAppBar
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2485)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2545)
at android.app.ActivityThread.access$1100(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1396)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5602)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:774)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:652)
Caused by: android.view.InflateException: Binary XML file line #11: Binary XML file line #11: Error inflating class com.google.android.material.bottomappbar.BottomAppBar
at android.view.LayoutInflater.inflate(LayoutInflater.java:543)
at android.view.LayoutInflater.inflate(LayoutInflater.java:427)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
at neel.com.bottomappbar.MainActivity.onCreate(MainActivity.kt:16)
at android.app.Activity.performCreate(Activity.java:6358)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2438)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2545)
at android.app.ActivityThread.access$1100(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1396)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5602)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:774)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:652)
Caused by: android.view.InflateException: Binary XML file line #11: Error inflating class com.google.android.material.bottomappbar.BottomAppBar
at android.view.LayoutInflater.createView(LayoutInflater.java:649)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:768)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:708)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:839)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:802)
at android.view.LayoutInflater.inflate(LayoutInflater.java:519)
at android.view.LayoutInflater.inflate(LayoutInflater.java:427)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
at neel.com.bottomappbar.MainActivity.onCreate(MainActivity.kt:16)
at android.app.Activity.performCreate(Activity.java:6358)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2438)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2545)
at android.app.ActivityThread.access$1100(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1396)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5602)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:774)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:652)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance(Native Method)
at android.view.LayoutInflater.createView(LayoutInflater.java:623)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:768)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:708)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:839)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:802)
at android.view.LayoutInflater.inflate(LayoutInflater.java:519)
at android.view.LayoutInflater.inflate(LayoutInflater.java:427)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
at neel.com.bottomappbar.MainActivity.onCreate(MainActivity.kt:16)
at android.app.Activity.performCreate(Activity.java:6358)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2438)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2545)
at android.app.ActivityThread.access$1100(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1396)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5602)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:774)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:652)
Caused by: java.lang.IllegalArgumentException: The style on this component requires your app theme to be Theme.MaterialComponents (or a descendant).
at com.google.android.material.internal.ThemeEnforcement.checkTheme(ThemeEnforcement.java:240)
at com.google.android.material.internal.ThemeEnforcement.checkMaterialTheme(ThemeEnforcement.java:215)
at com.google.android.material.internal.ThemeEnforcement.checkCompatibleTheme(ThemeEnforcement.java:143)
at com.google.android.material.internal.ThemeEnforcement.obtainStyledAttributes(ThemeEnforcement.java:78)
at com.google.android.material.bottomappbar.BottomAppBar
Upvotes: 112
Views: 86878
Reputation: 679
For me just this works and I don't have problems after this
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:theme="@style/Theme.MaterialComponents.Light.DarkActionBar"
tools:context="com.insigne.insigne.MainActivity"
android:id="@+id/Draw" >
This is my Java code:
binding.bottomNav.getMenu().findItem(R.id.home).setChecked(true);
badge = binding.bottomNav.getOrCreateBadge(R.id.notifications);
badge.setVisible(true);
badge.setNumber(1);
binding.bottomNav.setOnItemSelectedListener(item -> {
switch (item.getItemId()) {
case R.id.route:
try {
replaceFragment(new RouteFragment());
} catch (GeneralSecurityException | IOException e) {
throw new RuntimeException(e);
}
break;
case R.id.friends:
replaceFragment(new FriendsFragment());
break;
case R.id.home:
replaceFragment(new HomeFragment());
break;
case R.id.share:
replaceFragment(new ShareFragment());
break;
case R.id.notifications:
replaceFragment(new NotificationsFragment());
break;
}
return true;
});
Here my result
Upvotes: 0
Reputation: 11
Changing Gradle Dependencies to this did the work!
implementation 'androidx.navigation:navigation-fragment:2.3.5'
implementation 'androidx.navigation:navigation-ui:2.3.5'
P.S. Android Studio Dolphin | 2021.3.1 Patch 1
Upvotes: 0
Reputation: 2056
if you are adding a view into WindowManager you must set style into your layout like this
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/parentView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:theme="@style/Theme.YOUR_THEME"
android:orientation="vertical">
</LinearLayout>
Upvotes: 1
Reputation: 1
I had this problem and fixed it by changing the theme "Theme.MaterialComponents.Light.NoActionBar" with "Theme.MaterialComponents.Light.NoActionBar.Bridge" and this works for me.
Upvotes: 0
Reputation: 1515
You can also add theme to CoordinatorLayout, such as
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:theme="@style/Theme.MaterialComponents.Light.DarkActionBar.Bridge"
Upvotes: 3
Reputation: 11
I have an error when I create a chip in code, This issue makes the app stop working, so I solved with creating a chip with context like your activity name like below
Chip chip = new Chip(YourNameActivity.this);
It works for me, my app use dependency as com.google.android.material:material:1.4.0
Upvotes: 0
Reputation: 1145
I had this problem when I was testing the TextInputEditText which was inside a TextInputLayout with style that had parent parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox"
And the solution was to add the theme in the tests as follows
val scenario = launchFragmentInContainer<Fragment>(themeResId = R.style.Theme_APP)
Upvotes: 2
Reputation: 53
If you're having this issue and you're instantiating a view programmatically:
Make sure not to use getApplicationContext() when requiring a Context instance, but instead use this
or HolderActivity.this
(replace HolderActivity with your own activity) if inside a anonymous function.
For example I was having this issue with
CustomAlertDialogBuilder builder = new CustomAlertDialogBuilder(getApplicationContext());
where I should be using
CustomAlertDialogBuilder builder = new CustomAlertDialogBuilder(MyActivity.this);
Upvotes: 2
Reputation: 2360
Adding theme directly to widget works too. E.g.:
<com.google.android.material.button.MaterialButtonToggleGroup
android:id="@+id/toggle_button_group"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:theme="@style/Theme.MaterialComponents.Light"> <======== THIS
Checked with min. SDK ver. 21.
Upvotes: 67
Reputation: 9732
There is some issue with material:1.1.0-alpha01
A simple solution is to change the parent theme
<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>
Upvotes: 138
Reputation: 1188
Extend your base app Theme from Material Components Bridge theme. It extends AppCompat theme, but adds all necessary stuff.
<style name="Theme.MyApp" parent="Theme.MaterialComponents.Light.Bridge">
<!-- ... -->
</style>
Both
Theme.MaterialComponents
andTheme.MaterialComponents.Light
have.Bridge
themes:
Theme.MaterialComponents.Bridge
Theme.MaterialComponents.Light.Bridge
Theme.MaterialComponents.NoActionBar.Bridge
Theme.MaterialComponents.Light.NoActionBar.Bridge
Theme.MaterialComponents.Light.DarkActionBar.Bridge
It allows you to keep using latest version of the library, but avoid a lot of UI issues, caused by migration to pure Material Component theme
https://material.io/develop/android/docs/getting-started/#bridge-themes
Upvotes: 83
Reputation: 2362
None of these worked for me. Must do these two things.
<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
<!-- Customize your theme -->
</style>
and
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/nav_view"
app:theme="@style/Theme.MaterialComponents"
Upvotes: 17
Reputation: 3520
|> 1: Define the following style in style.xml
:
<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
<!-- Customize your theme -->
</style>
|> 2: In the manifest.xml
file, use from above style:
<application
android:hardwareAccelerated="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:theme="@style/AppTheme"> <!-- IMPORTANT (This was my mistake) -->
</application>
|> 3: Choose a style for your component:
<com.google.android.material.bottomappbar.BottomAppBar
android:id="@+id/bottomBar"
style="@style/Widget.MaterialComponents.BottomAppBar"
...
>
</com.google.android.material.bottomappbar.BottomAppBar>
Upvotes: 10
Reputation: 969
We have change Gradle dependencies and style code my case working fine
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
<item name="android:activatedBackgroundIndicator">@drawable/drawer_list_selector</item>
<item name="android:textColorSecondary">@color/black_overlay</item>
<!--<item name="android:windowBackground">@drawable/nav_menu_background</item>-->
</style>
Gradle Dependencies
implementation 'com.google.android.material:material:1.1.0-alpha06'
Upvotes: 7