在模拟器(XML)中发出呈现按钮



我有一个活动,有一堆不同的视图,然后有两个按钮没有正确呈现。我可以看到按钮应该出现在哪里,因为当我悬停在部分上时,我可以看到选择器出现,但我看不到它们应该在哪里。我可以在布局预览中看到按钮,但不能在模拟器中看到。该活动上的所有其他按钮都具有相同、精确的样式,正在按预期工作和呈现。

以下是我用于XML布局的代码(导致问题的按钮有:@+id/refine@+id/sort(:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/background">
<RelativeLayout
android:id="@+id/header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp">
....
</RelativeLayout>
<TextView
.../>
<com.google.android.material.button.MaterialButton
android:id="@+id/refine"
style="@style/Widget.MaterialComponents.Button.TextButton"
android:layout_width="29dp"
android:layout_height="29dp"
android:padding="8dp"
app:cornerRadius="30dp"
android:layout_toStartOf="@+id/sort"
android:layout_marginEnd="5dp"
android:layout_below="@id/header"
android:drawableStart="@drawable/filter"
android:theme="@style/MainButtonTheme" />
<com.google.android.material.button.MaterialButton
android:id="@+id/sort"
style="@style/Widget.MaterialComponents.Button.TextButton"
android:layout_width="29dp"
android:layout_height="29dp"
android:padding="8dp"
app:cornerRadius="30dp"
android:layout_marginEnd="12dp"
android:layout_alignParentEnd="true"
android:layout_below="@id/header"
android:drawableStart="@drawable/sort"
android:theme="@style/MainButtonTheme" />
<androidx.core.widget.NestedScrollView
...
</androidx.core.widget.NestedScrollView>
<include
... />
</RelativeLayout>

我已经检查过图标是否不小心用错了颜色,但我肯定没有。

我还意识到我遇到了一个错误(这并不能阻止代码运行(-详细信息如下(我不知道问题是什么(:

java.lang.NoClassDefFoundError: androidx/emoji2/viewsintegration/EmojiTextViewHelper
at androidx.appcompat.widget.AppCompatEmojiTextHelper.<init>(AppCompatEmojiTextHelper.java:43)
at androidx.appcompat.widget.AppCompatTextView.getEmojiTextViewHelper(AppCompatTextView.java:132)
at androidx.appcompat.widget.AppCompatTextView.setFilters(AppCompatTextView.java:219)
at android.widget.TextView.<init>(TextView.java:1613)
at android.widget.TextView.<init>(TextView.java:968)
at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:108)
at com.google.android.material.textview.MaterialTextView.<init>(MaterialTextView.java:93)
at com.google.android.material.textview.MaterialTextView.<init>(MaterialTextView.java:88)
at com.google.android.material.textview.MaterialTextView.<init>(MaterialTextView.java:83)
at com.google.android.material.theme.MaterialComponentsViewInflater.createTextView(MaterialComponentsViewInflater.java:61)
at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:121)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at android.view.BridgeInflater.lambda$createViewFromCustomInflater$0(BridgeInflater.java:259)
at android.view.BridgeInflater.createViewFromCustomInflater(BridgeInflater.java:285)
at android.view.BridgeInflater.onCreateView(BridgeInflater.java:122)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:930)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:950)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1004)
at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:309)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:961)
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:1123)
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1097)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1084)
at android.view.LayoutInflater.inflate(LayoutInflater.java:682)
at android.view.LayoutInflater.inflate(LayoutInflater.java:501)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:328)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:396)
at com.android.tools.idea.layoutlib.LayoutLibrary.createSession(LayoutLibrary.java:209)
at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:608)
at com.android.tools.idea.rendering.RenderTask.lambda$inflate$6(RenderTask.java:734)
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1590)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

非常感谢您的帮助。

当安卓工作室一直建议我使用drawableStart而不是drawableLeft时,我开始遇到这个问题。我不知道这可能是个问题。

在更改了代码中的一些内容后,我终于发现drawableStart而不是drawableLeft是导致按钮呈现问题的原因,所以我现在改回了drawableLeft,一切都如预期!

相关内容

最新更新