java - 如何在 Activity 中连续放置 6 个图像按钮

标签 java android android-layout imagebutton android-imagebutton

我目前正在 android 中构建一个 mastermind 游戏应用程序,我需要将 6 个基色按钮排成一行,但我遇到了一些错误

图像按钮的当前 xml 代码:

<ImageButton
            android:layout_width="50px"
            android:layout_height="40px"
            android:id="@+id/selectblackpeg"
            android:src="@mipmap/blackpeg"
            android:layout_above="@+id/buttonMainMenu"
            android:layout_alignRight="@+id/textGuesses"
            android:layout_toLeftOf="@+id/selectyellowpeg"
            android:layout_alignEnd="@+id/textGuesses"
            android:layout_marginBottom="50dp" />

        <ImageButton
            android:layout_width="50px"
            android:layout_height="40px"
            android:id="@+id/selectyellowpeg"
            android:src="@mipmap/yellowpeg"
            android:layout_toRightOf="@+id/selectblackpeg"
            android:contentDescription="yellowpeg"
            android:layout_alignTop="@+id/selectbluepeg" />

        <ImageButton
            android:layout_width="50px"
            android:layout_height="40px"
            android:id="@+id/selectbluepeg"
            android:src="@mipmap/bluepeg"
            android:layout_toRightOf="@+id/selectyellowpeg"
            android:layout_toEndOf="@+id/textGuesses" />

        <ImageButton
            android:layout_width="50px"
            android:layout_height="40px"
            android:id="@+id/selectredpeg"
            android:src="@mipmap/redpeg"
            android:layout_toRightOf="@+id/selectbluepeg"
            android:layout_toStartOf="@+id/buttonMainMenu" />

        <ImageButton
            android:layout_width="50px"
            android:layout_height="40px"
            android:id="@+id/selectgreenpeg"
            android:src="@mipmap/greenpeg"
            android:layout_toLeftOf="@+id/selectredpeg"
            android:layout_toStartOf="@+id/selectwhitepeg" />

        <ImageButton
            android:layout_width="50px"
            android:layout_height="40px"
            android:id="@+id/selectwhitepeg"
            android:src="@mipmap/whitepeg"
            android:layout_alignLeft="@+id/selectgreenpeg"
            android:layout_alignStart="@+id/selectyellowpeg" />

出现的错误信息是:

java.lang.IllegalStateException: Circular dependencies cannot exist in RelativeLayout at android.widget.RelativeLayout$DependencyGraph.getSortedViews(RelativeLayout.java:1724) at android.widget.RelativeLayout.sortChildren(RelativeLayout.java:382) at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:389) at android.view.View.measure(View.java:18788) at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715) at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461) at android.view.View.measure(View.java:18788) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at android.support.v7.internal.widget.ContentFrameLayout.onMeasure_Original(ContentFrameLayout.java:135) at android.support.v7.internal.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java) at android.view.View.measure(View.java:18788) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) at android.support.v7.internal.widget.ActionBarOverlayLayout.onMeasure_Original(ActionBarOverlayLayout.java:393) at android.support.v7.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java) at android.view.View.measure(View.java:18788) at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715) at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461) at android.view.View.measure(View.java:18788) at com.android.layoutlib.bridge.impl.RenderSessionImpl.measureView(RenderSessionImpl.java:470) at com.android.layoutlib.bridge.impl.RenderSessionImpl.render(RenderSessionImpl.java:357) at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:428) at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:350) at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:510) at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:498) at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:888) at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:498) at com.android.tools.idea.rendering.RenderTask.access$600(RenderTask.java:72) at com.android.tools.idea.rendering.RenderTask$3.call(RenderTask.java:610) at com.android.tools.idea.rendering.RenderTask$3.call(RenderTask.java:607) at com.android.tools.idea.rendering.RenderService.runRenderAction(RenderService.java:366) at com.android.tools.idea.rendering.RenderTask.render(RenderTask.java:607) at com.android.tools.idea.rendering.RenderTask.render(RenderTask.java:629) at com.intellij.android.designer.designSurface.AndroidDesignerEditorPanel$6.run(AndroidDesignerEditorPanel.java:480) at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:320) at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:310) at com.intellij.util.ui.update.MergingUpdateQueue$2.run(MergingUpdateQueue.java:254) at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:269) at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:227) at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:217) at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238) at com.intellij.util.Alarm$Request$1.run(Alarm.java:351) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

最佳答案

从您的控件中移除循环依赖

<ImageButton
        android:id="@+id/selectblackpeg"
        android:layout_toLeftOf="@+id/selectyellowpeg"/>

    <ImageButton
        android:id="@+id/selectyellowpeg"
        android:layout_toRightOf="@+id/selectblackpeg" />

您已指定 selectblackpeg 将在 selectyellowpeg 的左侧,而 selectyellowpeg 将在 selectblackpeg 的右侧.

只依赖一个控件。

关于java - 如何在 Activity 中连续放置 6 个图像按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35340144/

相关文章:

android - 数据截断 - 尝试插入时间时日期值不正确

java - 遍历 ListView 中的所有 TextView

java - 如何使硬编码(x,y)坐标对于不同屏幕通用?

java - 获取完整的联系人电话号码和国家/地区代码,即使未输入国家/地区代码

java - 在 Java 中组织 2D 整数数组

android - ListView 数据已删除并已更新,notifyDataSetChanged 被调用,但我的列表没有更新

android - 错误:IllegalArgumentException:此组件上的样式要求您的应用程序主题为Theme.MaterialComponents

android - 如何android Z顺序?

java - Spring boot - 在 @Qualifier 上使用可配置值

java - Scala 和 Eclipse : Export as Jar File, 但找不到 main 方法