Modifier l'Affichage du contenu de l'activité de manière dynamique
Ma classe abstraite étendue de Activity
classe se compose de trois View
s tel que décrit dans le code XML suivant extrait de:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="@drawable/bg">
<LinearLayout
android:id="@+id/top_border">
...
</LinearLayout>
<View
android:id="@+id/activity_content"
...
/>
<LinearLayout
android:id="@+id/bottom_border">
...
</LinearLayout>
</LinearLayout>
Et dans onCreate()
méthode que j'ai mis ce XML-mise en page en vue de contenu.
Je veux le Activity
de s étendre cette pour remplacer onCreate()
et y définir les activity_content View
restant frontières immuables.
Par exemple comme ceci:
abstract public class MyActivity extends Activity {
protected View mContent;
@Override
protected onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.common_layout);
initializeContent();
}
abstract void initializeContent();
}
class OneActivity extends MyActivity {
@Override
protected void initializeContent() {
mContent = View.inflate(this, R.layout.some_view, null); //i.e. concrete View (e.g. LinearLayout, FrameLayout, GridView, etc.)
}
}
Mais quand je le fais mon mContent restent les mêmes que lorsque j'ai défini dans MyActivity
's onCreate()
.
Comment puis-je changer l'affichage du type de contenu/dépend de ce que Activity
est au premier plan?
Salut, Si j'ai bien compris vous bien ce que vous voulez est d'avoir un modèle avec une certaine disposition fixe et certains dinamyc. Si c'est comme cela, je vous encourage à utiliser des Fragments.
OriginalL'auteur teoREtik | 2012-01-16
Vous devez vous connecter pour publier un commentaire.
D'abord changer la vue dans votre mise en page en vue de groupe (par exemple, un
LinearLayout
). Ensuite, vous pouvez ajouter des points de vue à elle. Si vous ajoutez un point de vue unique, il aura exactement l'effet que vous souhaitez obtenir.Dans votre cas, cela devrait fonctionner. Si votre vue personnalisée groupe contenait d'autres points de vue de plus haut dans la hiérarchie, vous pouvez le nettoyer avant de l'ajouter à votre vue personnalisée:
Il fonctionne, je fais exactement que, dans la plupart de mes projets.
Une alternative est de regarder les Des Fragments de l'API, disponible pour les dernières versions du kit de développement.
Un autre avantage de l'utilisation d'un ViewGroup est que vous pouvez modifier sa mise en page (en arrière-plan, largeur/hauteur, etc.) dans un seul endroit, et tous vos sous-classe, les activités seront touchés
OriginalL'auteur Guillaume
Vous ne pouvez pas remplacer membres de données de classe en Java, utiliser des méthodes à la place
OriginalL'auteur Mahdi Hijazi