我目前正在 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/