可以折叠LinearLayout容器中的TextView并在按钮单击时展开吗?

时间:2016-09-07 10:47:07

标签: android android-layout android-animation

我可以在LinearLayout容器中动态添加文本字段。

现在我需要在点击Button时删除这些添加的字段,这些添加的字段应该会被任何标签折叠。

可以吗?以下是我可以动态添加EditText的代码。

enter image description here

txtHeading = (EditText)findViewById(R.id.heading);
buttonAdd = (Button)findViewById(R.id.add);
container = (LinearLayout)findViewById(R.id.container);
buttonAdd.setOnClickListener(new View.OnClickListener(){

@Override
public void onClick(View arg0) 
     LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
     final View addView = layoutInflater.inflate(R.layout.list_view, null);
     LinearLayout linearLayout=(LinearLayout)findViewById(R.id.layout_icon_select);
     TextView textOut = (TextView)addView.findViewById(R.id.textout);

     textOut.setText(textIn.getText().toString());
     textIn.setText(null);

     Button buttonRemove = (Button)addView.findViewById(R.id.remove);
     buttonRemove.setOnClickListener(new View.OnClickListener(){
          @Override
          public void onClick(View v) {
                ((LinearLayout)addView.getParent()).removeView(addView);
          }
     });

    container.addView(addView);
}}});

    btnsave = (Button) findViewById(R.id.btn_save);
    btnsave.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
                //What to insert here?

单击以保存需要折叠所有textView元素的按钮。

让我们考虑Heading是标签,它被命名为Gender,所以如果我将选项添加为男性和女性,那么在点击保存按钮之后,这应该在标题下折叠。

2 个答案:

答案 0 :(得分:1)

根据我想要的猜测...我会根据线性布局创建自定义视图类。每个都有两个编辑文本。

在按下添加按钮时动态创建并添加此类。按下保存按钮后,您可以遍历父LinearLayout的子项,然后调用辅助方法来折叠第二个编辑文本元素。

循环播放父级并折叠子级。现在,CustomElement和collapseOptionField()调用是您必须编写的自定义代码。

LinearLayout parentLayout = findViewById(...);
for ( int i = 0; i < parentLayout.getChildCount(); i++ ) {
   CustomElement ce = parentLayout.getChildAt(i);
   ce.collapseOption();
}

<强>更新

具有可折叠选项的自定义类:

public class TextWithOption extends LinearLayout {

   EditText edit0;
   EditText edit1;

   public TextWithOption(Context context, AttributeSet attrs) {
      this(context);
   }

   public TextWithOption(Context context) {
      super(context);

      View view = LayoutInflater.from(context).inflate(R.layout.edit_text_option, null);

      edit0 = (EditText) view.findViewById(R.id.edit_text0);
      edit1 = (EditText) view.findViewById(R.id.edit_text1);

      addView(view);
   }

   public void collapseOption() {
      edit1.setVisibility(View.GONE);
   }

   public void showOption() {
      edit1.setVisibility(View.VISIBLE);
   }
}

将添加新选项然后折叠它们的活动代码:

final LinearLayout optionsLayout = (LinearLayout) findViewById(R.id.outer_layout);

 Button addButton = (Button) findViewById(R.id.button_add);
 addButton.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View view) {
            TextWithOption to = new TextWithOption(context);
            optionsLayout.addView(to);
         }
      });

      ((Button) findViewById(R.id.button_save)).setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View view) {
            for ( int i = 0; i < optionsLayout.getChildCount(); i++ ) {
               ((TextWithOption)optionsLayout.getChildAt(i)).collapseOption();
            }
         }
      });

答案 1 :(得分:0)

public static void collapse(final View v) {
    ScaleAnimation anim = new ScaleAnimation(1, 1, 1, 0);
    v.startAnimation(anim);
    anim.setAnimationListener(new Animation.AnimationListener() {
        @Override
        public void onAnimationStart(Animation animation) {
        }

        @Override
        public void onAnimationEnd(Animation animation) {
            v.setVisibility(View.GONE);
        }

        @Override
        public void onAnimationRepeat(Animation animation) {
        }
    });
}

onclick of button write view.collapse 视图等于你想要崩溃的任何视图