从布局动态添加和删除视图

时间:2014-03-10 05:19:43

标签: android android-layout view dynamic-programming

我正在开发一个演示项目,因为我创建了一个包含ImageViewEditText等视图的XML文件。我在运行时在FrameLayout上加载此XML文件。有一次我想删除所有视图并再次想要显示它们,我在按钮点击时使用removeView()方法,但它对我不起作用,请告诉我正确的方法...

       public class Demo extends Fragment implements OnClickListener, OnTouchListener{
    //Declaration of framelayout
    FrameLayout f;
    //Declaration of imageview
    ImageView imageview;
    View view, framelayoutview;
    File file;
    EditText etcardname, EditTextUserName,EditTextUsesrMobNumber,EditTextUsesrEmailID,EditTextUsesrAddress;
    TextView dialogtesting;
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container,
     Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.activity_modify_card ,container, false);
        framelayoutview = inflater.inflate(R.layout.frame_layout_data ,container, false);
        captureImageInitialization();
        Initialize();
        return view;
       }
     // Initialization of all views components
     private void Initialize() {
            f=(FrameLayout)view.findViewById(R.id.framelayout);
            Button btneditcardreset=(Button)view.findViewById(R.id.buttonresetcard);
            btneditcardreset.setOnClickListener(this);
            Bundle bundle = this.getArguments();
            int myInt;
            myInt = bundle.getInt("position");

            imageview=(ImageView)framelayoutview.findViewById(R.id.imageViewicon);
            EditTextUserName=(EditText)framelayoutview.findViewById(R.id.modifycardeditTextusername);
            EditTextUsesrMobNumber=(EditText)framelayoutview.findViewById(R.id.editTextmobilesnumber);
            EditTextUsesrEmailID=(EditText)framelayoutview.findViewById(R.id.editTextemailid);
            EditTextUsesrAddress=(EditText)framelayoutview.findViewById(R.id.editTextaddress);

            imageview.setOnTouchListener(this);
            EditTextUserName.setOnTouchListener(this);
            EditTextUsesrMobNumber.setOnTouchListener(this);
            EditTextUsesrEmailID.setOnTouchListener(this);
            EditTextUsesrAddress.setOnTouchListener(this);
            f.addView(framelayoutview);
           }
    @Override
    public void onClick(View v){
         if(v.getId()==R.id.buttonresetcard){
                 if(framelayoutview.getParent()!=null){
                 f.removeAllViews();
                 }
                 f.addView(framelayoutview);

                 }
      }

对不起,我忘了告诉我,我提供了OnTouchListener,以便我可以在Layout的任意位置移动视图。因此,当我按下重置按钮时,所有View s应该移回原来的位置,这意味着他们在第一次加载时所处的位置..

3 个答案:

答案 0 :(得分:0)

你可以使用

imageview.setVisibility(View.GONE);

imageview.setVisibility(View.VISIBLE);

关于特定事件

答案 1 :(得分:0)

如果您已将视图动态添加到FrameLayout,则可以将其删除。

否则,如果您在frameLayout XML中显示您的XML视图,则无法将其删除,但您可以通过设置setVisibility(View.GONE)setVisibility(View.INVISIBLE)来隐藏它们。

答案 2 :(得分:0)

试试这个 -

 @Override
    public void onClick(View v){
         if(v.getId()==R.id.buttonresetcard){
                 if(framelayoutview.getParent()!=null){
                 f.setVisibility(View.GONE);
                 }
                 f.addView(framelayoutview);

                 }
      }