2017-07-27 4 views
0

Ich habe ein dynamisches Layout für edittext mit Add und Minus Icons erstellt. Wenn ich auf Hinzufügen klicke, sollte das Layout wieder neu erstellt werden und anstelle von add image sollte minus angezeigt werden. Das Hinzufügen-Symbol wird beim ersten Klick in Minus geändert, aber minus wird nicht in plus geändert.Wenn ich auf Minus geklickt habe, wird das Unterlayout entfernt, aber nicht kann das Symbol ändern.Layout bei Klick auf dynamisches Bild ausblenden und anzeigen

Das ist mein dynamisches Layout:

public void dLayout(){ 
     count++; 
     lay_frame = new LinearLayout(this); 
     lay_frame.setOrientation(LinearLayout.VERTICAL); 
     lay_frame.setId(count); 

     for (int i =0; i<numClass; i++){ 
      lay_main = new LinearLayout(this); 
      lay_uncle = new LinearLayout(this); 
      lay_cousin = new LinearLayout(this); 

      lay_main.setOrientation(LinearLayout.VERTICAL); 
      lay_uncle.setOrientation(LinearLayout.HORIZONTAL); 
      lay_uncle.setGravity(Gravity.CENTER); 
      lay_cousin.setOrientation(LinearLayout.HORIZONTAL); 
      lay_cousin.setGravity(Gravity.CENTER); 

      txt_uncle = new TextView(this); 
      txt_uncle.setText("Uncle Name"); 
      txt_uncle.setTextColor(Color.BLACK); 
      txt_uncle.setPadding(0, 20 , 0, 20); 
      txt_uncle.setTextSize(14); 

      txt_cousin = new TextView(this); 
      txt_cousin.setText("Cousin Name"); 
      txt_cousin.setTextColor(Color.BLACK); 
      txt_cousin.setPadding(0, 20 , 0, 0); 
      txt_cousin.setTextSize(14); 

      img_add = new ImageView(this); 
      img_add.setImageResource(R.drawable.add01); 
      img_add.setPadding(8, 0, 0 ,0); 

      img_minus = new ImageView(this); 
      img_minus.setImageResource(R.drawable.minus); 
      img_minus.setPadding(8, 0, 0 ,0); 
      img_minus.setVisibility(View.GONE); 

      img_cousinadd = new ImageView(this); 
      img_cousinadd.setImageResource(R.drawable.add01); 
      img_cousinadd.setPadding(8, 0, 0 ,0); 

      img_cousinminus = new ImageView(this); 
      img_cousinminus.setImageResource(R.drawable.minus); 
      img_cousinminus.setPadding(8, 0, 0 ,0); 

      ed_uncle = new EditText(this); 
      ed_uncle.setInputType(InputType.TYPE_CLASS_TEXT); 
      ed_uncle.setPadding(12, 8 ,8 ,8); 
      ed_uncle.setTextColor(Color.BLACK); 
      ed_uncle.setTextSize(14); 
      ed_uncle.setBackgroundResource(R.drawable.border); 

      ed_cousin = new EditText(this); 
      ed_cousin.setInputType(InputType.TYPE_CLASS_TEXT); 
      ed_cousin.setPadding(12, 8 ,8 ,8); 
      ed_cousin.setTextColor(Color.BLACK); 
      ed_cousin.setTextSize(14); 
      ed_cousin.setBackgroundResource(R.drawable.border); 

      final LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
        LinearLayout.LayoutParams.MATCH_PARENT, 80, 8.5f 
      ); 
      params.setMargins(80, 0, 0, 0); 
      ed_cousin.setLayoutParams(params); 
      txt_cousin.setLayoutParams(params); 

      LinearLayout.LayoutParams params1 = new LinearLayout.LayoutParams(
        LinearLayout.LayoutParams.MATCH_PARENT, 80, 8.5f 
      ); 
      params.setMargins(40, 0, 0, 0); 
      ed_uncle.setLayoutParams(params1); 

       img_add.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 

         img_add.setVisibility(View.GONE); 
         img_minus.setVisibility(View.VISIBLE); 

         dLayout(); 

        } 

       }); 


       img_minus.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 

         if (count > 0) { 

          final LinearLayout temp = (LinearLayout) mainLayout.findViewById(count); 
          mainLayout.removeView(temp); 
          count--; 

         } 


         img_minus.setVisibility(View.GONE); 
         img_add.setVisibility(View.VISIBLE); 


        } 
       }); 

      lay_main.addView(txt_uncle); 
      lay_uncle.addView(ed_uncle); 
      lay_uncle.addView(img_add); 
      lay_uncle.addView(img_minus); 
      lay_main.addView(lay_uncle); 
      lay_main.addView(txt_cousin); 
      lay_cousin.addView(ed_cousin); 
      lay_cousin.addView(img_cousinadd); 
      lay_main.addView(lay_cousin); 
      lay_frame.addView(lay_main); 

     } 

     mainLayout.addView(lay_frame); 

    } 
+0

Welche Funktionalität haben Sie in dLayout(); Methode ? –

+0

public void dLayout() { zählen ++; lay_frame = new LinearLayout (this); lay_frame.setOrientation (LinearLayout.VERTICAL); lay_frame.setId (Anzahl); ...... siehe oben auf Abfrage –

Antwort

0

ändern BTN

img_add.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 

         dLayout();  

         img_add.setVisibility(View.GONE); 
         img_minus.setVisibility(View.VISIBLE); 

        } 
       }); 

dieser Klick-Logik hinzugefügt werden, da nach der Sichtbarkeit Einstellung wieder Ihr die Minus-Taste Sichtbarkeit im dLayout gegangen Einstellung(); Das bedeutet, dass die Eigenschaft durch den nächsten Wert überschrieben wird.

+0

es funktioniert, aber es ändert Unterposition plus Bild zu minus. –

0

In OnClick Listener für Minus-Schaltfläche wurde LayLayout LineLayout aus dem Hauptlayout entfernt. Der Minus-Button ist ein Kind des Layouts lay_frame, das nicht mehr an den Baum angehängt ist. Wenn Sie die Ansicht beim Klicken auf die Minus-Schaltfläche entfernen, macht das Ändern des Symbols von Minus- in Plus-Bild keinen Sinn.

+0

Ich möchte plus Bild von Hauptwauout nicht für Unterlayout ändern. Beim Klicken auf das Plus-Unterlayout des Hauptelements wird nicht Haupt entfernt. –

Verwandte Themen