1const { withAndroidStyles } = require("expo/config-plugins");
2
3module.exports = function withAndroidInputBackground(config) {
4 return withAndroidStyles(config, (config) => {
5 const appTheme = config.modResults.resources.style?.find(
6 (style) => style.$?.name === "AppTheme",
7 );
8 if (!appTheme) {
9 throw new Error("withAndroidInputBackground: AppTheme is missing from styles.xml.");
10 }
11
12 // Inputs draw their own backgrounds and borders. Remove the native underline
13 // drawable so it cannot peek out beneath rounded corners or return on focus.
14 // Set both attributes for AppCompat and framework EditText implementations.
15 appTheme.item ??= [];
16 for (const name of ["editTextBackground", "android:editTextBackground"]) {
17 const existing = appTheme.item.find((item) => item.$?.name === name);
18 if (existing) {
19 existing._ = "@null";
20 } else {
21 appTheme.item.push({ $: { name }, _: "@null" });
22 }
23 }
24
25 return config;
26 });
27};