web-dev-qa-db-fra.com

Comment puis-je changer la mise en page XML incluse en une autre mise en page sur du code Java?

j'ai un problème. Je développe une application Android.

J'ai inclus la deuxième mise en page à la première mise en page comme ceci:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent" >

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="300dp"
    Android:layout_height="match_parent"
    Android:layout_gravity="clip_horizontal"
    Android:layout_alignParentLeft="true" 
    Android:id="@+id/rlMenu"
    >

    <Button
        Android:id="@+id/bMusteriler"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:text="Musteriler"
        Android:textSize="45dp"
        Android:layout_alignParentLeft="true"
         />

</RelativeLayout>

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="match_parent"
    Android:layout_toRightOf="@id/rlEkranlar"
     >

    <include
        Android:id="@+id/include1"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        layout="@layout/ikinci" />

</RelativeLayout>
</RelativeLayout>

Le problème est de savoir comment puis-je modifier la disposition incluse lorsque vous cliquez sur un bouton (code Java)?

Désolé pour mon anglais ... Merci.

21
UurYsr

Je suggère ViewFlipper dans RelativeLayout de vos déclarations include. Essayez comme ça:

<ViewFlipper xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:id="@+id/vf"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content" >

    <include Android:id="@+id/include1" layout="@layout/ikinci" />
    <include Android:id="@+id/map" layout="@layout/third_layout" />

</ViewFlipper>

Accédez à ViewFlipper comme ci-dessous . La première mise en page est initialement produite

ViewFlipper vf = (ViewFlipper)findViewById(R.id.vf);

Pour Button onClickListener:

button.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                vf.setDisplayedChild(1);
            }
        });
52
Yugandhar Babu

Il y a deux façons de changer les mises en page dans le code:

A. Changer la visibilité. Incluez deux différentes dispositions dans votre fichier XML: 

<include 
    Android:id="@+id/id1"
    Android:visibility="visible"/>
<include 
    Android:id="@+id/id2"
    Android:visibility="gone"/>

et dans le code, utilisez ceci:

findViewById(R.id.id1).setVisibility(View.GONE);
findViewById(R.id.id2).setVisibility(View.VISIBLE);

B. Ajouter manuellement les enfants. Utilisez le même XML que vous utilisez maintenant et ajoutez dans le code que vous pouvez ajouter ou supprimer des enfants:

yourRelativeLayout.removeAllViews();
yourRelativeLayout.addView(viewToInclude);

Hors sujet:

Vous n'avez pas besoin d'écrire xmlns:Android param dans RelativeLayout. Juste pour la balise la plus en haut dans le fichier de mise en page. 

20
Jin35

Si vous avez essayé d’obtenir l’instance de la vue actuelle du fichier XML, vous avez inclus l’autre fichier XML et utilisé findViewById(). View v est la première présentation et vous utilisez .findViewById() dans cette vue.

0
Nikola Despotoski