此视图不受约束,它只有设计时位置,因此除非添加约束,否则它将跳转到(0,0)

时间:2017-07-20 23:48:36

标签: android-layout constraints

此视图不受约束,它只有设计时位置,因此除非添加约束,否则它将跳转到(0,0)。

布局编辑器允许您将小部件放在画布上的任何位置,并使用设计时属性(例如layout_editor_absoluteX)记录当前位置。这些属性不会在运行时应用,因此如果您在设备上推送布局,窗口小部件可能出现在与编辑器中显示的位置不同的位置。要解决此问题,请通过从边连接拖动来确保窗口小部件具有水平和垂直约束。

7 个答案:

答案 0 :(得分:6)

这可能会帮助某人。 我在使用Android Studio 3.1时遇到了同样的问题,但是我没有找到这些选项(约束布局->推断布局)。 然后,在仔细检查之后,我在布局窗口上方找到了“推断约束”选项(请参阅下面的步骤1中的屏幕截图)

第1步:点击“推断约束”。这可以解决您的问题,但是如果您的小部件仍然不可见(如我的情况),请执行步骤2。 enter image description here

第2步:点击“ AppTheme”,然后选择“ NoTitleBar”主题,如屏幕截图所示 enter image description here

这解决了我的问题。

答案 1 :(得分:5)

在Android Studio中右键单击设计布局,然后选择“约束布局”并打开子菜单,然后选择“推断布局”并编译您的应用程序。

答案 2 :(得分:1)

Android Studio提示说:

此视图不受限制。它仅具有设计时位置,因此除非您添加较少的约束,否则它将在运行时跳至(0,0)...(Ctrl + F1) 布局编辑器允许您将小部件放置在画布上的任何位置,并使用设计时属性(例如layout_editor_absoluteX)记录当前位置。这些属性不会在运行时应用,因此,如果您在设备上推送布局,则小部件可能会出现在与编辑器所示位置不同的位置。

要解决此问题,请通过拖动边缘连接来确保小部件具有水平和垂直约束。

答案 3 :(得分:0)

在我的项目中,此错误是由android:layout_width="fill_parent"android:layout_height="fill_parent"表达式引起的。 fill_parent常量已过时。更改为match_parent可解决问题:

<ViewFlipper
    android:id="@+id/viewFlipper1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">

</ViewFlipper>

答案 4 :(得分:0)

从Android Studio v3及更高版本中,推断约束已从下拉列表中删除。

使用设计预览上方工具栏菜单中的魔术棒图标;有“推断约束”按钮。单击此按钮,这将自动在文本字段中添加一些行,并且红线将被删除。

https://i.stack.imgur.com/77dfo.png

答案 5 :(得分:0)

将以下代码段添加到您的代码中:

if (timeGap == 1) {
    if (limitGap == 50000) {
        if (carValue < 50000) {
            document.getElementById('total-cost').innerHTML = 310;
        } else if (50001 < carValue < 100000) {
            document.getElementById('total-cost').innerHTML = 1233;
        } else if (100001 < carValue < 150000) {
            document.getElementById('total-cost').innerHTML = 12333;
        } else if (150001 < carValue < 200000) {
            document.getElementById('total-cost').innerHTML = 133321;
        }

答案 6 :(得分:0)

这是我的解决方法(100%正常工作):

1,请拖放您在“可绘制”文件夹中输入的图像。请注意保留原始名称

2,点击播放(绿色三角形)按钮

3,显示错误,请单击您的图片,然后右键单击> 重构> 重命名> 所有地方> 重构,然后再次运行该应用程序> 重新启动

请注意,图像名称不得包含“-”,“ _”

运行该应用程序时,它将名称保存到内存中,因此只需使用原始名称重新输入该图像,然后单击 Refactor> Rename> 输入其他名称(不得包含任何字符) >选择所有位置(这会将整个损坏的名称更改为更好的名称)>重构并重新运行您的应用程序!