视图在添加到 ViewGroup 后不可见
Views are invisible after they was added into ViewGroup
我正在以编程方式将视图添加到 FrameLayout
:
public class PixelGridView extends FrameLayout {
...
public void addViewWithoutCoords(TableView view, int column, int row) {
float x = column * mCellSideSize;
float y = row * mCellSideSize;
FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
view.setLayoutParams(lp);
view.setLeft(0);
view.setTop(0);
view.setX(x);
view.setY(y);
view.setVisibility(VISIBLE);
addView(view);
}
...
}
然而,它们都以某种方式不可见。 getChildCount()
returns 一起算吧。 getVisibility()
对于每个添加的视图也 returns VISIBLE
.
我可以将此类视图从另一个 ViewGroup
拖放到我的 Framelayout
中,当我这样做时,所有之前添加的视图都变得可见。
view
布局文件:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<ImageView
android:id="@+id/ivTable"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"/>
<EditText
android:id="@+id/ivTableName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="@color/style_table_grey"
android:textColor="@android:color/white"/>
</RelativeLayout>
即使我在不拖动的情况下添加新视图,所有内容都会变得可见。
尝试在您的 android 设备的开发者选项中打开显示布局边界,并找到您的项目的位置。
FrameLayout
和 RelativeLayout
的项目视图可以重叠。如果两个项目视图在FrameLayout
的相同位置,第一个加载的项目将被后面的项目覆盖。
我正在以编程方式将视图添加到 FrameLayout
:
public class PixelGridView extends FrameLayout {
...
public void addViewWithoutCoords(TableView view, int column, int row) {
float x = column * mCellSideSize;
float y = row * mCellSideSize;
FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
view.setLayoutParams(lp);
view.setLeft(0);
view.setTop(0);
view.setX(x);
view.setY(y);
view.setVisibility(VISIBLE);
addView(view);
}
...
}
然而,它们都以某种方式不可见。 getChildCount()
returns 一起算吧。 getVisibility()
对于每个添加的视图也 returns VISIBLE
.
我可以将此类视图从另一个 ViewGroup
拖放到我的 Framelayout
中,当我这样做时,所有之前添加的视图都变得可见。
view
布局文件:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<ImageView
android:id="@+id/ivTable"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"/>
<EditText
android:id="@+id/ivTableName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="@color/style_table_grey"
android:textColor="@android:color/white"/>
</RelativeLayout>
即使我在不拖动的情况下添加新视图,所有内容都会变得可见。
尝试在您的 android 设备的开发者选项中打开显示布局边界,并找到您的项目的位置。
FrameLayout
和 RelativeLayout
的项目视图可以重叠。如果两个项目视图在FrameLayout
的相同位置,第一个加载的项目将被后面的项目覆盖。