gonfler dans de fusion
Salut, je suis en train de gonfler ma mise en page avec <merge>
tag voici mon main.xml :
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<com.osmgames.kartuves.LinesLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/lines" />
</merge>
C'est mon LinesLayout.java:
public class LinesLayout extends FrameLayout {
public LinesLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
super.onInterceptTouchEvent(event);
return false;
}
}
Et mon main.java:
public class main extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}}
Je tiens donc à gonfler le code XML ci-dessous pour main.xml. Comment puis-je le faire?
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="fill_parent">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_gravity="center"
android:layout_marginTop="75dp"
android:layout_marginRight="40dp"
android:src="@drawable/line" />
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_gravity="center"
android:layout_marginTop="75dp"
android:src="@drawable/line" />
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_gravity="center"
android:layout_marginTop="75dp"
android:layout_marginLeft="40dp"
android:src="@drawable/line" />
</FrameLayout>
C'est le journal que je reçois:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.osmgames.kartuves/com.osmgames.kartuves.InGame}: android.view.InflateException: <merge /> can be used only with a valid ViewGroup root and attachToRoot=true
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
at android.app.ActivityThread.access$2300(ActivityThread.java:125)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: <merge /> can be used only with a valid ViewGroup root and attachToRoot=true
at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
at **com.osmgames.kartuves.InGame.onCreate(InGame.java:59)**
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
... 11 more
InGame.java:59 :
58 FrameLayout item = (FrameLayout)findViewById(R.id.lines);
59 View child = getLayoutInflater().inflate(R.layout.letters3, null);
60 item.addView(child);
OriginalL'auteur Kęstas Venslauskas | 2012-05-09
Vous devez vous connecter pour publier un commentaire.
La fusion de la balise doit être utilisé dans le gonflés de mise en page, il se confond lui-même à l'intérieur de la ViewGroup parent.
Essayez ceci :
et ce :
Espère que ça aidera
Arf désolé, j'ai oublié une chose : Votre vue fusionnée besoin d'être un viewgroup comme vue fusionnée. Vous pouvez également utiliser la balise include, qui pourrait être mieux pour votre besoin.
J'ai essayé de comprendre, mais j'ai besoin de définir la mise en page inclus par programme selon l'application a besoin. J'ai besoin de 1 de la le 8 des mises en page qui doit être inséré...
Il y a quelque chose de sûr : la fusion de la balise ne doit pas être dans la main.xml fichier de mise en page. Il devrait être dans la gonflés vue. Le gonflés vue doit également disposer de la fusion de la balise, puis un viewGroup et ensuite votre image de vues.
Juste vu quelque chose :
FrameLayout item = (FrameLayout)findViewById(R.id.lines); View child = getLayoutInflater().inflate(R.layout.letters3, item );
OriginalL'auteur Mathieu de Brito
utilisation
pour gonfler votre mise en page, il vous donnera votre mère modèle dans lequel tous les points de vue sont présents, puis transtypage ou si vous voulez ajouter, puis l'ajouter directement à une autre mise en page.
Il pourrait être bon si vous ajoutez plus d'explications sur pourquoi vous devez le faire comme ça.
OriginalL'auteur Bharat Sharma
Il est mieux d'utiliser
ou
vous pouvez utiliser
lorsque vous passez vraie, elle va automatiquement faire les choses pour vous.
qui serait un moins de vue à la place de l'inutile FrameLayout vous ajoutez à la place de fusion de la balise.
OriginalL'auteur Akhil Dad