Android Studio 布局错误

Posted

技术标签:

【中文标题】Android Studio 布局错误【英文标题】:Android Studio Layout Errors 【发布时间】:2015-10-17 11:55:12 【问题描述】:

嘿,我真的需要你的帮助。

我的问题是 android Studio 无法在模拟器或物理设备中正确显示布局。 每当我放置一个 textView、按钮等并且我想将它居中(水平、垂直或两者),然后我启动模拟器时,它就会卡在左上角。

这是我的代码::

private void firstStage()
    ViewGroup container = (ViewGroup) findViewById(R.id.container);
    container.removeAllViews();
    container.addView(getLayoutInflater().inflate(R.layout.first_stage, null));



private void showHint()
    ViewGroup container = (ViewGroup) findViewById(R.id.container);
    container.removeAllViews();
    container.addView(getLayoutInflater().inflate(R.layout.first_hint, null));
    firstImage = (ImageView) findViewById(R.id.hintImage);
    firstImage.setImageResource(R.drawable.firsthint);
    Button back = (Button) findViewById(R.id.first_hint_backButton);
    back.setOnClickListener(this);



在 showHint 方法中,一切正常。按钮和图像视图在我设置它们的地方。

然而,在 firstStage 方法中,我有一个 textView,如果我选择带有“中心”的东西,它总是在左上角,比如 Android Studio 突然无法处理重力:中心了。

我尝试创建一个新项目,但仍然出现错误。如果我将 textView 设置在右侧,然后将其放在中间并带有 margin-right,它就可以工作。但这并不是真正的长期解决方案。有没有人遇到过同样的问题?

在你问之前,是的,我已经用“中心”尝试了一切。在 XML- 文件中,在代码中等等。

也许这对你也有帮助::

如果我通过 setContentView(R.layout.first_stage); 调用布局;有用。 textView 就在我想要的位置.. 我只是不知道为什么它不再适用于 ViewGroup,当它完美地适用于我的其他 2 个布局时?!

这是我的布局代码::

<?xml version="1.0" encoding="utf-8"?>

RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_ android:layout_

<TextView
    android:layout_
    android:layout_
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="@string/first_stage"
    android:id="@+id/textView2"
    android:enabled="true"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true" />

/相对布局

编辑::

现在可以了!!我将容器从 RelativeLayout 更改为 FrameLayout。我不知道为什么它现在有效,但它有效!!!

感谢 pdegand59 的快速帮助,非常感谢。

【问题讨论】:

【参考方案1】:

当给视图充气时,你必须给充气器一个父级来解析视图的布局参数。

container.addView(getLayoutInflater().inflate(R.layout.first_stage, container, false));

这就是为什么 Android Studio 在使用 null parent 膨胀时会出现警告。

顺便说一句,您可以将膨胀的视图自动添加到您的视图层次结构中,只需:

getLayoutInflater().inflate(R.layout.first_stage, container, true);

【讨论】:

感谢您的帮助,但不幸的是它并没有解决我的问题。与其他布局 container.addView(getLayoutInflater().inflate(R.layout.first_stage, null));工作得很好。我的问题是,一旦我将按钮、文本视图或其他任何东西居中,当我启动应用程序时,它就会位于左上角。其他所有职位都有效,但我无法居中,我只是不知道为什么。我是水平居中,垂直居中还是两者居中都没关系。 什么是容器?相对布局?什么是 R.layout.first_stage ?您发布的 XML 吗? 是的,容器是一个空的 RLayout,first_stage 是我发布的 XML。

以上是关于Android Studio 布局错误的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio 布局错误

如何修复 Windows 10 上的 Android Studio adb 错误?

Android Studio 不显示布局预览(也没有错误发生)

Android Android studio 底部导航栏的基本实现

Android Android studio 底部导航栏的基本实现

为啥android studio显示“约束布局中缺少约束”的错误?