Moh*_*j S 8 android android-layout android-constraintlayout
我开始使用约束布局,仅在编译设计文件时遇到断言错误,就会发生此问题。解决此问题的正确方法是什么?我搞砸了一天。这是我的XML设计。
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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:id="@+id/cL_Layout"
android:layout_width="match_parent"
android:layout_height="80dp"
android:background="@color/card_background">
<android.support.constraint.Guideline
android:id="@+id/gL_right_margin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.95" />
<android.support.constraint.Guideline
android:id="@+id/gL_vertical_center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.50364965" />
<android.support.constraint.Guideline
android:id="@+id/gL_bottom_margin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="1.0" />
<android.support.constraint.Guideline
android:id="@+id/gL_image_size_margin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.3" />
<ImageView
android:id="@+id/imgVw_AddClips_recVw_icon"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginBottom="4dp"
android:layout_marginStart="4dp"
android:layout_marginTop="4dp"
android:adjustViewBounds="true"
android:background="@drawable/qik_highlights_shape"
android:contentDescription="@string/dummy_content"
android:scaleType="fitCenter"
android:src="@drawable/bg_cloud_icon"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/gL_image_size_margin"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.ibot.cyranoapp.customview.TextViewFont
android:id="@+id/txtIp_recVw_AddClips_Name_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="@string/recVw_Template_channel"
android:textAllCaps="false"
android:textColor="@color/fa_preview_button_text_grey"
android:textSize="14sp"
android:textStyle="bold"
app:layout_constraintStart_toEndOf="@+id/gL_image_size_margin"
app:layout_constraintTop_toTopOf="parent" />
<com.ibot.cyranoapp.customview.TextViewFont
android:id="@+id/txtIp_recVw_Components_Name_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_marginStart="8dp"
android:text="@string/recVw_Template_Components"
android:textAllCaps="false"
android:textColor="@color/fa_preview_button_text_grey"
android:textSize="12sp"
app:layout_constraintStart_toEndOf="@+id/gL_image_size_margin"
app:layout_constraintTop_toBottomOf="@+id/txtIp_recVw_AddClips_Name_title" />
<com.ibot.cyranoapp.customview.TextViewFont
android:id="@+id/txtIp_recVw_channel_subscribers_hint"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:text="@string/channel_subscribers"
android:textAllCaps="false"
android:textColor="@color/fa_preview_button_text_grey"
android:textSize="12sp"
app:layout_constraintStart_toEndOf="@+id/gL_image_size_margin"
app:layout_constraintTop_toBottomOf="@+id/txtIp_recVw_Components_Name_title" />
<RadioButton
android:id="@+id/rBtn_AddClips_SelectionIcon"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
android:button="@drawable/qik_checkbox"
android:text="@null"
android:theme="@null"
app:layout_constraintBottom_toTopOf="@+id/gL_bottom_margin"
app:layout_constraintEnd_toStartOf="@+id/gL_right_margin"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/view_template_1"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/fa_preview_button_text_grey"
android:visibility="gone"
app:layout_constraintBottom_toTopOf="@+id/gL_right_margin"
app:layout_constraintEnd_toEndOf="@+id/gL_right_margin" />
<View
android:id="@+id/view_template_selection"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@color/fa_green_1"
app:layout_constraintBottom_toBottomOf="@+id/view_template_1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)
和我的错误日志在这里:
java.lang.AssertionError:在android.support.constraint.solver.widgets.Guideline.getAnchor(Guideline.java:159)在android.support.constraint.solver.widgets.ConstraintWidget.immediateConnect(ConstraintWidget.java:1597)处位于顶部android.support.constraint.ConstraintLayout.setChildrenConstraints(ConstraintLayout.java:1031)位于android.support.constraint.ConstraintLayout.updateHierarchy(ConstraintLayout.java:794)位于android.support.constraint.ConstraintLayout.onMeasure(ConstraintLayout.java:1542)在android.support的android.widget.FrameLayout.onMeasure(FrameLayout.java:185)的android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6459)的android.view.View.measure(View.java:21051)处。 v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:141)在android.view.View.measure(View.java:21051)在android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6459)在android。 android.widget的widget.LinearLayout.measureVertical(LinearLayout.java:758)android.widget.LinearLayout.onMeasure(LinearLayout.java:640)android.view.View.measure(View.java:21051)android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6459)在android.widget.FrameLayout.onMeasure(FrameLayout.java:185)在android.view.View.measure(View.java:21051)在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java: 6459)位于android.widget处的android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)处。android.widget.LinearLayout.onMeasure(LinearLayout.java:640)的LinearLayout.measureVertical(LinearLayout.java:758)android.view.ViewGroup.measureChildWithMargins(ViewGroup)的android.view.View.measure(View.java:21051) .java:6459),位于com.android.internal.policy.DecorView.onMeasure(DecorView.java:849),位于android.widget.FrameLayout.onMeasure(FrameLayout.java:185),位于android.view.View.measure(View。 java:21051)位于android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2583)位于android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1642)位于android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1893)位于android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1522)位于android.view.ViewRootImpl $ TraversalRunnable.run(ViewRootImpl。java:7098),位于android.view.Choreographer $ CallbackRecord.run(Choreographer.java:927),位于android.view.Choreographer.doCallbacks(Choreographer.java:702),位于android.view.Choreographer.doFrame(Choreographer.java:638) )在android.view.Choreographer $ FrameDisplayEventReceiver.run(Choreographer.java:913)在android.os.Handler.handleCallback(Handler.java:751)在android.os.Handler.dispatchMessage(Handler.java:95) .os.Looper.loop(Looper.java:154)在android.app.ActivityThread.main(ActivityThread.java:6682)在com.android.internal.os的java.lang.reflect.Method.invoke(本机方法) .ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1520)位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)android.view上的Choreographer $ CallbackRecord.run(Choreographer.java:927)。android.view.Choreographer.doFrame(Choreographer.java:638)处的Choreographer.doCallbacks(Choreographer.java:702)在android.view.Choreographer $ FrameDisplayEventReceiver .run(Choreographer.java:913)在android.os.Handler.handleCallback(Handler.java:751)在android.os.Handler.dispatchMessage(Handler.java:95)在android.os.Looper.loop(Looper。 java:154)位于android.app.ActivityThread.main(ActivityThread.java:6682)位于com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java.lang.reflect.Method.invoke(本机方法) java:1520),位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)android.view上的Choreographer $ CallbackRecord.run(Choreographer.java:927)。android.view.Choreographer.doFrame(Choreographer.java:638)处的Choreographer.doCallbacks(Choreographer.java:702)在android.view.Choreographer $ FrameDisplayEventReceiver .run(Choreographer.java:913)在android.os.Handler.handleCallback(Handler.java:751)在android.os.Handler.dispatchMessage(Handler.java:95)在android.os.Looper.loop(Looper。 java:154)位于android.app.ActivityThread.main(ActivityThread.java:6682)位于com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java.lang.reflect.Method.invoke(本机方法) java:1520),位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)android.view上的Choreographer.doCallbacks(Choreographer.java:702)android.view.Choreographer.doFrame(Choreographer.java:638)android.view.Choreographer $ FrameDisplayEventReceiver.run(Choreographer.java:913)在android.os.Handler.handleCallback (Handler.java:751)在android.os.Handler.dispatchMessage(Handler.java:95)在android.os.Looper.loop(Looper.java:154)在android.app.ActivityThread.main(ActivityThread.java: 6682)在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1520)在java.lang.reflect.Method.invoke(本机方法)在com.android.internal.os.ZygoteInit.main( ZygoteInit.java:1410)android.view.Choreographer.doFrame(Choreographer.java:638)上的Choreographer.doCallbacks(Choreographer.java:702)android.os.Handler.handleCallback上的android.view.Choreographer $ FrameDisplayEventReceiver.run(Choreographer.java:913) (Handler.java:751)在android.os.Handler.dispatchMessage(Handler.java:95)在android.os.Looper.loop(Looper.java:154)在android.app.ActivityThread.main(ActivityThread.java: 6682)在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1520)在java.lang.reflect.Method.invoke(本机方法)在com.android.internal.os.ZygoteInit.main( ZygoteInit.java:1410)Choreographer $ FrameDisplayEventReceiver.run(Choreographer.java:913)在android.os.Handler.handleCallback(Handler.java:751)在android.os.Handler.dispatchMessage(Handler.java:95)在android.os.Looper.loop (Looper.java:154)在android.app.ActivityThread.main(ActivityThread.java:6682)在java.lang.reflect.Method.invoke(本机方法)在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1520)位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)Choreographer $ FrameDisplayEventReceiver.run(Choreographer.java:913)在android.os.Handler.handleCallback(Handler.java:751)在android.os.Handler.dispatchMessage(Handler.java:95)在android.os.Looper.loop (Looper.java:154)在android.app.ActivityThread.main(ActivityThread.java:6682)在java.lang.reflect.Method.invoke(本机方法)在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1520)位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)6682)在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1520)在java.lang.reflect.Method.invoke(本机方法)在com.android.internal.os.ZygoteInit.main( ZygoteInit.java:1410)6682)在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1520)在java.lang.reflect.Method.invoke(本机方法)在com.android.internal.os.ZygoteInit.main( ZygoteInit.java:1410)
Bel*_*ouf 10
使用垂直参考线时,任何受其约束的视图都应水平执行,水平参考线也应如此。
在您的情况下,您将view_template_1垂直方向限制为垂直方向,因此请更改此方法:
app:layout_constraintBottom_toTopOf="@+id/gL_right_margin"
Run Code Online (Sandbox Code Playgroud)
根据水平方针
始终检查布局,并确保在准则中添加适当的约束。
我错过了android:orientation="horizontal"/ android:orientation="vertical"从标签GuideLine。确保您已正确添加它。
最后,它应该是这样的
<androidx.constraintlayout.widget.Guideline
android:id="@+id/gl_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="@id/cv_rank_status"
app:layout_constraintGuide_percent="0.3"
app:layout_constraintTop_toTopOf="@id/cv_rank_status" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2607 次 |
| 最近记录: |