在onBackPressed

时间:2016-12-20 11:24:31

标签: android android-linearlayout android-view onbackpressed

我需要一个帮助,我已经动态创建了线性布局,我必须更改创建的线性布局的可见性。

我的努力表明:

for (int i=0;i<qty;i++) {
            final View view1 = LayoutInflater.from(BookingDetails.this).inflate(R.layout.dynamic_truck_item, null);
            view_visible.add(false);
            final LinearLayout view_dd=(LinearLayout)view1.findViewById(R.id.view_dd);
}

返回:

@Override
    public void onBackPressed() {
        if (backPressedToExitOnce) {
            super.onBackPressed();

        } else {
            this.backPressedToExitOnce = true;

            // Here i have to set the visibility of created linear layout to VIEW.GONE

        }

    }

2 个答案:

答案 0 :(得分:2)

创建一个ArrayList来保存对LienarLayouts的所有引用

private ArrayList<View> collectionOfViews = new ArrayList();

在扩充布局时,将视图添加到列表中:

for (int i=0;i<qty;i++) {
        final View view1 = LayoutInflater.from(BookingDetails.this).inflate(R.layout.dynamic_truck_item, null);
        view_visible.add(false);
        final LinearLayout view_dd=(LinearLayout)view1.findViewById(R.id.view_dd);
        collectionOfViews.add(view_dd);
}

然后在onBackPressed中使用以下方式设置可见性:

for(View view : collectionOfViews) {
    view.setVisibility(View.GONE);
}

答案 1 :(得分:1)

您应该从循环中取出查看view1 ,之后您应该使用 ViewGroup 在索引处添加视图。

((ViewGroup)view1.findViewById(R.id.background)).addView(child, index);

在您的 onBackPressed()方法之后,您可以按索引查看,只需将可见性设置为已消失/可见。

@Override
public void onBackPressed() { 
   ((ViewGroup)view1.findViewById(R.id.background)).getChildAt(index).setVisibility(View.GONE);
}