diff --git a/apps/app/ui-tests-app/search-bar/issue-4147.xml b/apps/app/ui-tests-app/search-bar/issue-4147.xml
index 32e905be3..79df36dfa 100644
--- a/apps/app/ui-tests-app/search-bar/issue-4147.xml
+++ b/apps/app/ui-tests-app/search-bar/issue-4147.xml
@@ -5,11 +5,10 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/app/ui/search-bar/search-bar-tests-native.android.ts b/tests/app/ui/search-bar/search-bar-tests-native.android.ts
index 75a14073a..743638199 100644
--- a/tests/app/ui/search-bar/search-bar-tests-native.android.ts
+++ b/tests/app/ui/search-bar/search-bar-tests-native.android.ts
@@ -4,9 +4,10 @@ import * as utils from "tns-core-modules/utils/utils";
function getTextView(bar: android.widget.SearchView): android.widget.TextView {
if (bar) {
- var id = bar.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
+ const pkgName = bar.getContext().getPackageName();
+ var id = bar.getContext().getResources().getIdentifier("search_src_text", "id", pkgName);
if (id) {
- return bar.findViewById(id);
+ return bar.findViewById(id);
}
}
diff --git a/tns-core-modules/ui/search-bar/search-bar.android.ts b/tns-core-modules/ui/search-bar/search-bar.android.ts
index 39a86c175..c6c8b06e2 100644
--- a/tns-core-modules/ui/search-bar/search-bar.android.ts
+++ b/tns-core-modules/ui/search-bar/search-bar.android.ts
@@ -11,11 +11,11 @@ const SEARCHTEXT = Symbol("searchText");
const QUERY = Symbol("query");
interface QueryTextListener {
- new (owner: SearchBar): android.widget.SearchView.OnQueryTextListener;
+ new (owner: SearchBar): android.support.v7.widget.SearchView.OnQueryTextListener;
}
interface CloseListener {
- new (owner: SearchBar): android.widget.SearchView.OnCloseListener;
+ new (owner: SearchBar): android.support.v7.widget.SearchView.OnCloseListener;
}
let QueryTextListener: QueryTextListener;
@@ -26,8 +26,8 @@ function initializeNativeClasses(): void {
return;
}
- @Interfaces([android.widget.SearchView.OnQueryTextListener])
- class QueryTextListenerImpl extends java.lang.Object implements android.widget.SearchView.OnQueryTextListener {
+ @Interfaces([android.support.v7.widget.SearchView.OnQueryTextListener])
+ class CompatQueryTextListenerImpl extends java.lang.Object implements android.support.v7.widget.SearchView.OnQueryTextListener {
constructor(private owner: SearchBar) {
super();
return global.__native(this);
@@ -58,8 +58,8 @@ function initializeNativeClasses(): void {
}
}
- @Interfaces([android.widget.SearchView.OnCloseListener])
- class CloseListenerImpl extends java.lang.Object implements android.widget.SearchView.OnCloseListener {
+ @Interfaces([android.support.v7.widget.SearchView.OnCloseListener])
+ class CompatCloseListenerImpl extends java.lang.Object implements android.support.v7.widget.SearchView.OnCloseListener {
constructor(private owner: SearchBar) {
super();
return global.__native(this);
@@ -71,12 +71,14 @@ function initializeNativeClasses(): void {
}
}
- QueryTextListener = QueryTextListenerImpl;
- CloseListener = CloseListenerImpl;
+ QueryTextListener = CompatQueryTextListenerImpl;
+ CloseListener = CompatCloseListenerImpl;
}
export class SearchBar extends SearchBarBase {
- nativeView: android.widget.SearchView;
+ nativeView: android.support.v7.widget.SearchView;
+ private _searchTextView: android.widget.TextView;
+ private _searchPlate: android.widget.LinearLayout;
public dismissSoftInput() {
ad.dismissSoftInput(this.nativeView);
@@ -93,7 +95,7 @@ export class SearchBar extends SearchBarBase {
public createNativeView() {
initializeNativeClasses();
- const nativeView = new android.widget.SearchView(this._context);
+ const nativeView = new android.support.v7.widget.SearchView(this._context)
nativeView.setIconified(false);
const queryTextListener = new QueryTextListener(this);
@@ -118,6 +120,8 @@ export class SearchBar extends SearchBarBase {
const nativeView: any = this.nativeView;
nativeView.closeListener.owner = null;
nativeView.queryTextListener.owner = null;
+ this._searchPlate = null;
+ this._searchTextView = null;
super.disposeNativeView();
}
@@ -208,12 +212,22 @@ export class SearchBar extends SearchBarBase {
}
private _getTextView(): android.widget.TextView {
- const id = this.nativeView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
- return this.nativeView.findViewById(id);
+ if (!this._searchTextView) {
+ const pkgName = this.nativeView.getContext().getPackageName();
+ const id = this.nativeView.getContext().getResources().getIdentifier("search_src_text", "id", pkgName);
+ this._searchTextView = this.nativeView.findViewById(id);
+ }
+
+ return this._searchTextView;
}
private _getSearchPlate(): android.widget.LinearLayout {
- const id = this.nativeView.getContext().getResources().getIdentifier("android:id/search_plate", null, null);
- return this.nativeView.findViewById(id);
+ if (!this._searchPlate) {
+ const pkgName = this.nativeView.getContext().getPackageName();
+ const id = this.nativeView.getContext().getResources().getIdentifier("search_plate", "id", pkgName);
+ this._searchPlate = this.nativeView.findViewById(id);
+ }
+
+ return this._searchPlate;
}
}