I need to use BottomSheetBehavior
with ScrollView
but it says to me :
Unexpected namespace prefix \"app\" found for tag RelativeLayout
I had the same issue. Just take out your bottom-sheet layout into the separate file. And include it in the main layout via include
tag.
This issue is well known in while using data-binding in a layout.
Assume you want to use some data binding attribute with app:
prefix then just adding xmlns:app...
will not be enough. layout should be data binding layout wrapped with <layout
tag.
e.g. I imported layout_toolbar_default.xml
and using app:toolbarTitle
to specify title
.
<?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:layout_width="match_parent"
android:layout_height="match_parent"
>
<include
layout="@layout/layout_toolbar_default"
app:toolbarTitle="@{@string/app_name}"
/>
</LinearLayout>
This will show error Unexpected namespace prefix "app" found
.
Wrap your layout with <layout
tag because you are using binding attribute.
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<include
layout="@layout/layout_toolbar_default"
app:toolbarTitle="@{@string/app_name}"
/>
</LinearLayout>
</layout>
Use of android.support.v7.widget.LinearLayoutCompat
<android.support.v7.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="match_parent"
app:behavior_hideable="true"
app:behavior_peekHeight="80dp"
app:layout_behavior="@string/string_bottom_sheet_behavior">
</android.support.v7.widget.LinearLayoutCompat>
For someone who gets the similar error Unexpected namespace prefix “app” found
on textView, you might need to change TextView
to android.support.v7.widget.AppCompatTextView
.
xmlns:app="http://schemas.android.com/apk/res-auto"
This is set multiple times. Both in CoordinatorLayout
and RelativeLayout
.
Remove the one in RelativeLayout
.
Declaring once in the file will suffice.
For people using androidx, if you have child views from some androidx view, they should also be the androidx view to be able to recognize app namespace prefix. For example instead of:
<ImageView/>
you should use <androidx.appcompat.widget.AppCompatImageView/>
This is not harmfull and it provides support for lower api version if you use some features that could not be supported (like tints for ImageView) :)