2012-07-19 4 views
0

Je voudrais créer des boutons dynamiques dans mon activité principale. Les boutons sont dans une activité séparée avec un propre fichier de disposition. Je peux vous montrer mon projet de test. Je suppose que cela pourrait être mieux, mais je suis toujours un débutant dans ce domaine. ;-)Création de boutons dynamiques en utilisant deux mises en page en android

Ceci est mon activité principale. Rien de spécial:

package de.example.testprojekt; 
import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.support.v4.app.NavUtils; 

public class MainActivity extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} 
} 

J'ai une autre classe avec le code suivant:

package de.example.testprojekt; 

import android.content.Context; 
import android.util.AttributeSet; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.widget.Button; 
import android.widget.LinearLayout; 

public class TestClass extends LinearLayout { 

LayoutInflater inflator; 


public TestClass (Context context) { 
    super (context); 
    initialize(); 
} 

public TestClass (Context context, AttributeSet attrs) { 
    super (context, attrs); 
    initialize(); 
} 

public TestClass (Context context, AttributeSet attrs, int defStyle) { 
    super (context, attrs, defStyle); 
    initialize(); 
} 

void initialize() { 
    inflator = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    inflator.inflate(R.layout.secondary_activity, this); 
} 

@Override 
protected void onFinishInflate() { 
    super.onFinishInflate(); 
    setupLayout();  
} 

Button button1; 
String TAG = "tag"; 
private void setupLayout() { 
    button1 = (Button) findViewById(R.id.button1); 

    button1.setOnClickListener(new OnClickListener() { 

     public void onClick(View arg0) { 

      Log.e(TAG,"test"); 

     } 
    }); 
} 
} 

Et voici mes deux fichiers XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 

<LinearLayout 
      android:id="@+id/linearLayout" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal" > 

      <de.example.testprojekt.TestClass 
       android:id="@+id/mainCtrl1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="30dp" /> 

      <de.example.testprojekt.TestClass 
       android:id="@+id/mainCtrl2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="30dp" /> 
     </LinearLayout> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:padding="@dimen/padding_medium" 
    android:text="@string/hello_world" 
    tools:context=".MainActivity" /> 

Et le second:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:text="Button" /> 

+0

Je ne suis pas sûr que je comprends ce que vous êtes après. Pouvez-vous fournir des dessins? –

+0

Bien sûr. Voici un screentshot. [link] (http://s7.directupload.net/images/120719/yi6jc6ui.jpg) Comme vous pouvez le voir, j'ai deux boutons. Ils sont générés dans le premier fichier XML et initialisés dans le deuxième fichier XML. Je voudrais ajouter et supprimer ces boutons dynamiques pendant que mon application est en cours d'exécution. Mais les boutons doivent utiliser le format XML comme mise en page parce que je veux ajouter plus de vues à la deuxième mise en page. Est-il possible d'activer et de désactiver les boutons dans l'activité principale au lieu de l'activité xml? J'espère que vous comprenez ma demande :-) –

Répondre

0

SI vous faites ce que je pense que vous faites cela pourrait être utile: http://developer.android.com/reference/android/view/ViewGroup.html

ViewGroup vous permet d'ajouter dynamiquement/supprimer des vues AFAIK. Si vous avez ces boutons attachés à un ViewGroup (dans votre cas vos deux mises en page) Je voudrais juste appeler quelque chose comme

layout.removeView (button1)

Espoir qui aide.

EDIT: Je viens de trouver ceci tout en regardant dans des choses plus dynamiques. Semble même plus puissant que viewgroup puisqu'il a lieu APRÈS que toutes les dispositions ont été construites et telles. http://www.techrepublic.com/blog/app-builder/dynamic-styling-of-views-on-android/1131

0

Pour cela il suffit d'utiliser u visiblité pour les boutons pour enlever

Button.setVisibility(View.GONE); 

et pour ajouter

Button.setVisibility(View.VISIBLE); 
Questions connexes