嘿,我真的需要你的帮助。
我的问题是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方法中,一切正常..按钮和imageview就在那里我设置了它们。
在firstStage方法中,我有一个textView,如果我选择带有“center”的东西,它总是在左上角,就像Android Studio突然无法处理重力:中心了。
我尝试创建一个新项目,但错误仍然存在。如果我将textView设置为右侧,然后将其放在右边的中间,则可以正常工作。但这并不是一个长期的解决方案。你有没有人遇到同样的问题?
在你问之前,是的,我已经用“中心”尝试了一切。在XML文件中,在代码中等等。
也许这也会帮助你::
如果我通过setContentView(R.layout.first_stage)调用布局;有用。 textView就在那里,我想要它...我只是不知道为什么它不再适用于ViewGroup,当它完全适用于我的其他2个布局?!
这是我的Layout-Code ::
<?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的
EDIT ::
现在有效!!我将容器从RelativeLayout更改为FrameLayout。我不知道为什么它现在有效,但它有效!!!
感谢pdegand59的快速帮助,真的很感激。
答案 0 :(得分:0)
在为视图充气时,您必须向inflater提供父级以解析视图的布局参数。
container.addView(getLayoutInflater().inflate(R.layout.first_stage, container, false));
这就是为什么Android Studio在使用null
父级充气时会收到警告。
顺便说一句,您可以仅使用以下内容自动将充气视图添加到视图层次结构中:
getLayoutInflater().inflate(R.layout.first_stage, container, true);