Android 设置父视图可见性对其子视图的影响
这个问题源于必须动态显示/隐藏不同的视图。视图有3个可见性设置-可见、不可见和消失。如果您有一个父视图,例如具有多个子视图(不管它们是什么)的Android 设置父视图可见性对其子视图的影响,android,android-layout,android-linearlayout,android-view,Android,Android Layout,Android Linearlayout,Android View,这个问题源于必须动态显示/隐藏不同的视图。视图有3个可见性设置-可见、不可见和消失。如果您有一个父视图,例如具有多个子视图(不管它们是什么)的LinearLayout,是否将父视图的可见性设置为与单独设置所有子视图的可见性相同?例如,如果我说 LinearLayout container = (LinearLayout) findViewById(R.id.layout_1); container.setVisiblity(View.GONE); 这与查找每个单独的子视图并将所有这些可见性设置
LinearLayout
,是否将父视图的可见性设置为与单独设置所有子视图的可见性相同?例如,如果我说
LinearLayout container = (LinearLayout) findViewById(R.id.layout_1);
container.setVisiblity(View.GONE);
这与查找每个单独的子视图并将所有这些可见性设置为
view.GONE
相同吗?如果父对象不是View.go
,而是View.INVISIBLE
,该怎么办?所有的孩子都还在画画,只是看不见而已吗?是的,你在所有方面都是正确的:)
将布局可见性设置为GONE将隐藏所有子级。将布局可见性设置为“不可见”将使所有子级都不可见,但仍会绘制并占用空间。效果相同,但实际上不会设置所有子级的可见性。它不会吸引他们 例如:
任何时候一个视图是不可见的,它都不会绘制它或它的子视图。如果它消失了,它也不会为它们保留任何布局空间。但是,如果您检查子视图的
getVisibility()
,您将看到它仍然设置为以前的状态,即使它没有被绘制。使用下面的递归函数使子视图可见或消失第一个参数是您的父视图,第二个参数决定您希望父视图的子视图可见还是消失。 true=可见 false=消失
private void layoutElemanlarininGorunumunuDegistir(View view, boolean gorunur_mu_olsun) {
ViewGroup view_group;
try {
view_group = (ViewGroup) view;
Sabitler.konsolaYazdir(TAG, "View ViewGroup imiş!" + view.getId());
} catch (ClassCastException e) {
Sabitler.konsolaYazdir(TAG, "View ViewGroup değilmiş!" + view.getId());
return;
}
int view_eleman_sayisi = view_group.getChildCount();
for (int i = 0; i < view_eleman_sayisi; i++) {
View view_group_eleman = view_group.getChildAt(i);
if (gorunur_mu_olsun) {
view_group_eleman.setVisibility(View.VISIBLE);
} else {
view_group_eleman.setVisibility(View.GONE);
}
layoutElemanlarininGorunumunuDegistir(view_group_eleman, gorunur_mu_olsun);
}
}
private void layouttelemanlariningorunumunudegistir(视图视图,布尔值gorunur\u mu\u olsun){
视图组视图组;
试一试{
视图组=(视图组)视图;
Sabitler.konsolaYazdir(标记“View-ViewGroup-imiş!”+View.getId());
}catch(ClassCastException e){
Sabitler.konsolaYazdir(标签“View ViewGroup değilmiş!”+View.getId());
返回;
}
int view_eleman_sayisi=view_group.getChildCount();
for(int i=0;i
您在文档中的任何地方都有一个链接,上面写着?我知道当我将父布局设置为View.Goe时,它会隐藏子布局,但它是“取消绘制”它们还是只是使它们不可见?这种行为对我来说没有意义,特别是因为它与XML膨胀不同(即可见性传播到子布局)。是否有一种变通方法可以使XML和Java保持一致?