Некорректно отображается xml-макет в Android Studio
xml содержит следующий следующий код:
<?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:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/style_round_30_layout"
app:cardBackgroundColor="#232121"
android:padding="15dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/authorization"
android:textColor="#FFFFFF"
android:textSize="34sp" />
<EditText
android:id="@+id/token"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:autofillHints=""
android:hint="@string/token"
android:inputType="textCapSentences"
android:textColor="#FFFFFF"
android:textColorHint="#B5B4B4" />
</LinearLayout>
При добавлении кнопки вниз к LinearLayout в разделе дизайна отображается какой-то бред, то есть кнопка (напомню, в LinearLayout) отобразилась поверх первого элемента, после перезагрузки xml файла макет вовсе отказался работать и показывает черный фон.
Также имеются следующие ошибки:
RenderProblem
java.lang.reflect.InvocationTargetException at
jdk.internal.reflect.GeneratedMethodAccessor656.invoke at
jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:566) at
android.view.LayoutInflater.onCreateView(LayoutInflater.java:928) at
android.view.LayoutInflater.onCreateView(LayoutInflater.java:948) at
android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1002) at
android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:959) at
android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:1121) at
android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72) at
android.view.LayoutInflater.rInflate(LayoutInflater.java:1095) at
android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082) at
android.view.LayoutInflater.inflate(LayoutInflater.java:680) at
android.view.LayoutInflater.inflate(LayoutInflater.java:499) Copy stack to clipboard
String Index out range: -1
Error inflating the preview (Details)
Details:
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:47)
at java.base/java.lang.String.charAt(String.java:693)
at android.content.res.BridgeTypedArray.getType(BridgeTypedArray.java:1024)
at android.content.res.BridgeTypedArray.getType(BridgeTypedArray.java:809)
at android.content.res.BridgeTypedArray.getValue(BridgeTypedArray.java:778)
at android.content.res.BridgeTypedArray.peekValue(BridgeTypedArray.java:847)
at android.view.View.<init>(View.java:5951)
at android.view.ViewGroup.<init>(ViewGroup.java:697)
at android.widget.FrameLayout.<init>(FrameLayout.java:99)
at com.android.layoutlib.bridge.MockView.<init>(MockView.java:55)
at com.android.layoutlib.bridge.MockView.<init>(MockView.java:51)
at com.android.layoutlib.bridge.MockView.<init>(MockView.java:47)
at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:324)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:959)
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:1121)
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1095)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082)
at android.view.LayoutInflater.inflate(LayoutInflater.java:680)
at android.view.LayoutInflater.inflate(LayoutInflater.java:499)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:325)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:369)
at com.android.tools.idea.layoutlib.LayoutLibrary.createSession(LayoutLibrary.java:141)
at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:710)
at com.android.tools.idea.rendering.RenderTask.lambda$inflate$6(RenderTask.java:865)
at com.android.tools.idea.rendering.RenderExecutor$runAsyncActionWithTimeout$2.run(RenderExecutor.kt:174)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
Я пытался решить проблему следующими действиями:
- Перезагрузка пк и Android Studio
- Перезагрузка Android плагинов
- Invalidate caches
- Пробовал создавать новый xml и вставлять туда код из старого
- Менял устройство, тему и ориентацию
- Reload All from Disk
- В gradle менял зависимость implementation 'com.google.android.material:material:1.4.0' на 1.3.0
- Rebuild проекта
Код из gradle:
plugins {
id 'com.android.application'
}
android {
compileSdkVersion 30
buildToolsVersion "30.0.3"
defaultConfig {
applicationId "com.dev.vk_bots"
minSdkVersion 23
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-
rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.0'
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}
При этом проект нормально билдится и запускается на телефоне с нормальным отображением
На фотографии видно, как один и тот же код Android и Android Studio читают по-разному
UPD: создал новый проект, скопировал проблемный xml, та же фигня
