当前位置: 首页 > 知识库问答 >
问题:

Android Studio布局错误

狄阳秋
2023-03-14

嘿我真的需要你的帮助。

我的问题是Android Studio不会在仿真器或物理设备中正确显示布局。每当我放置一个textView、button等,并且我想要将它居中(水平、垂直或两者),并且我启动仿真器时,它就会被贴在左上角。

这是我的代码::

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方法中,一切工作都很好。按钮和imageview就在我设置的地方。

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

我尝试创建一个新项目,但错误仍然发生。如果我将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_width=“match_parent”android:layout_height=“match_parent”

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    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

编辑::

现在起作用了!!我将容器从RelativeLayout改为FrameLayout。我不知道为什么它现在起作用了,但它起作用了!!!

感谢pdegand59的快速帮助,真的很感激。

共有1个答案

韦寒
2023-03-14

当膨胀视图时,必须为膨胀器提供父级以解析视图的布局参数。

container.addview(getLayoutInflater().Inflate(r.layout.first_stage,container,false));

这就是为什么Android Studio在使用null父级进行膨胀时会有一个警告。

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

getLayoutInflater().Inflate(r.layout.first_stage,container,true);

 类似资料:
  • 有什么建议为什么我会在layout_behavior上出现这个错误,以及如何修复它?

  • 主要活动: } 片段类 错误:java.lang.runtimeException:无法启动活动ComponentInfo{com.darkweb.android.chroma2018/com.darkweb.android.chroma2018.mainactivity}:Android.view.filflateException:二进制XML文件行#0:错误inflating类在Androi

  • 我运行的是Mac OSX,我安装了android Studio-它启动正常。 问题1 我用一个空活动开始一个新项目。在最上面的窗户上我收到一条信息 问题2 我在底部窗口中看到以下错误: 错误:CompilesDKVersion android-L需要使用JDK 7 Open SDK Settings进行编译 打开文件 当我尝试在设备上运行项目时,我得到以下错误: 失败[INSTALL_FAILED

  • 我使用Android Studio2020.3.1补丁3和ConstraintLayout来显示两行UI。 以下是预期的UI Latyout: 您可以将test.xml复制到res/layout,在“code”视图中打开test.xml,然后单击“second_row_image_view”,最后切换到“design”视图,您还可以发现second_row_image_view浮动在first_r

  • Tabris.js使用原生平台的能力来对UI界面进行布局。由于显示密度在移动设备之间差异很大,因此Tabris.js中的像素始终用设备独立像素表示。 布局数据 全部控件都支持layoutData属性,该属性定义了控件的排列方式。layoutData的值必须是下列属性组成的一个对象: left right top bottom centerX centerY baseline width heigh

  • 准则 单位和度量 度量与边框 结构 自适应 UI