<FrameLayout
Android:id="@+id/content_frame"
Android:layout_width="match_parent"
Android:layout_height="match_parent" />
<ListView
Android:id="@+id/left_drawer"
Android:layout_width="240dp"
Android:layout_height="match_parent"
Android:layout_gravity="start"
Android:background="#111"
Android:choiceMode="singleChoice"
Android:divider="@Android:color/transparent"
Android:dividerHeight="0dp" />
L'ajout de cela à la mise en page xml selon Créer un tiroir de navigation la documentation produit
Exception raised during rendering: DrawerLayout must be measured with MeasureSpec.EXACTLY.
Exception details are logged in Window > Show View > Error Log
Java.lang.IllegalArgumentException: DrawerLayout must be measured with MeasureSpec.EXACTLY.
at Android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.Java:591)
at Android.view.View.measure(View.Java:15518)
at Android.view.ViewGroup.measureChildWithMargins(ViewGroup.Java:4825)
at Android.widget.FrameLayout.onMeasure(FrameLayout.Java:310)
at Android.view.View.measure(View.Java:15518)
at Android.view.ViewGroup.measureChildWithMargins(ViewGroup.Java:4825)
at Android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.Java:1404)
at Android.widget.LinearLayout.measureVertical(LinearLayout.Java:695)
at Android.widget.LinearLayout.onMeasure(LinearLayout.Java:588)
at Android.view.View.measure(View.Java:15518)
at Android.view.ViewGroup.measureChildWithMargins(ViewGroup.Java:4825)
at Android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.Java:1404)
at Android.widget.LinearLayout.measureVertical(LinearLayout.Java:695)
at Android.widget.LinearLayout.onMeasure(LinearLayout.Java:588)
at Android.view.View.measure(View.Java:15518)
at com.Android.layoutlib.bridge.impl.RenderSessionImpl.measureView(RenderSessionImpl.Java:607)
at com.Android.layoutlib.bridge.impl.RenderSessionImpl.render(RenderSessionImpl.Java:509)
at com.Android.layoutlib.bridge.Bridge.createSession(Bridge.Java:334)
at com.Android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.Java:325)
at com.Android.ide.Eclipse.adt.internal.editors.layout.gle2.RenderService.createRenderSession(RenderService.Java:440)
at com.Android.ide.Eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.renderWithBridge(GraphicalEditorPart.Java:1545)
at com.Android.ide.Eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.recomputeLayout(GraphicalEditorPart.Java:1302)
at com.Android.ide.Eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.activated(GraphicalEditorPart.Java:1059)
at com.Android.ide.Eclipse.adt.internal.editors.layout.LayoutEditorDelegate.delegatePageChange(LayoutEditorDelegate.Java:686)
at com.Android.ide.Eclipse.adt.internal.editors.common.CommonXmlEditor.pageChange(CommonXmlEditor.Java:360)
at org.Eclipse.ui.part.MultiPageEditorPart$2.widgetSelected(MultiPageEditorPart.Java:292)
at org.Eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.Java:248)
at org.Eclipse.swt.widgets.EventTable.sendEvent(EventTable.Java:84)
at org.Eclipse.swt.widgets.Widget.sendEvent(Widget.Java:1276)
at org.Eclipse.swt.widgets.Widget.sendEvent(Widget.Java:1300)
at org.Eclipse.swt.widgets.Widget.sendEvent(Widget.Java:1285)
at org.Eclipse.swt.widgets.Widget.notifyListeners(Widget.Java:1079)
at org.Eclipse.swt.custom.CTabFolder.setSelection(CTabFolder.Java:3028)
at org.Eclipse.swt.custom.CTabFolder.onMouse(CTabFolder.Java:1749)
at org.Eclipse.swt.custom.CTabFolder$1.handleEvent(CTabFolder.Java:278)
at org.Eclipse.swt.widgets.EventTable.sendEvent(EventTable.Java:84)
at org.Eclipse.swt.widgets.Widget.sendEvent(Widget.Java:1276)
at org.Eclipse.swt.widgets.Display.runDeferredEvents(Display.Java:3562)
at org.Eclipse.swt.widgets.Display.readAndDispatch(Display.Java:3186)
at org.Eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.Java:1053)
at org.Eclipse.core.databinding.observable.Realm.runWithDefault(Realm.Java:332)
at org.Eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.Java:942)
at org.Eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.Java:86)
at org.Eclipse.ui.internal.Workbench$5.run(Workbench.Java:588)
at org.Eclipse.core.databinding.observable.Realm.runWithDefault(Realm.Java:332)
at org.Eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.Java:543)
at org.Eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.Java:149)
at org.Eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.Java:124)
at org.Eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.Java:196)
at org.Eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.Java:110)
at org.Eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.Java:79)
at org.Eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.Java:353)
at org.Eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.Java:180)
at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:39)
at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:25)
at Java.lang.reflect.Method.invoke(Method.Java:597)
at org.Eclipse.equinox.launcher.Main.invokeFramework(Main.Java:629)
at org.Eclipse.equinox.launcher.Main.basicRun(Main.Java:584)
at org.Eclipse.equinox.launcher.Main.run(Main.Java:1438)
at org.Eclipse.equinox.launcher.Main.main(Main.Java:1414)
J'ai un problème similaire. Si vous souhaitez prévisualiser la disposition pendant un moment, vous pouvez modifier temporairement la largeur et la hauteur en absolu.
par exemple:-
<Android.support.v4.widget.DrawerLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="400px"
Android:layout_height="800px">
Ce problème est résolu dans la version 18 de la bibliothèque de support, publiée en juillet.
dans Eclipse, cliquez avec le bouton droit sur votre projet> sélectionnez Android> ajouter une bibliothèque de support.
Fixé. :)
D'un autre Question J'ai résolu le problème en étendant DrawerLayout et en forçant les Measure_Specs corrects:
public class CustomDrawerLayout extends DrawerLayout {
public CustomDrawerLayout(Context context) {
super(context);
}
public CustomDrawerLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomDrawerLayout(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
widthMeasureSpec = MeasureSpec.makeMeasureSpec(
MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.EXACTLY);
heightMeasureSpec = MeasureSpec.makeMeasureSpec(
MeasureSpec.getSize(heightMeasureSpec), MeasureSpec.EXACTLY);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
La réponse d'Asmok est gentille mais je suis ce type de personne qui oublie toujours d'inverser ces modifications "temporaires". (En d'autres termes, le temporaire peut devenir très gros ^^)
Au lieu de cela, j'utilise le <include>
balise et divise la mise en page en deux fichiers.
<Android.support.v4.widget.DrawerLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/drawer_layout"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<!-- The main content view -->
<include layout="@layout/main_layout" />
<!-- The navigation drawer -->
<include layout="@layout/navigation_drawer"/>
</Android.support.v4.widget.DrawerLayout>
Pour la mise en page principale (qui est l'interface utilisateur de l'activité en question), je peux maintenant utiliser l'éditeur graphique d'Eclipse car tout le contenu vit dans un seul fichier main_layout.xml
.
De plus, je peux facilement inclure le tiroir de navigation dans différentes activités sans avoir à copier et coller le code.
La solution la plus simple que j'ai trouvée était de mettre dans l'aperçu Theme.Holo.Light.Dialog.FixedSize fonctionnel et paisible ...
Les vues personnalisées sont difficiles à afficher correctement pour l'éditeur d'interface utilisateur dans Eclipse (il en va de même pour l'éditeur d'interface utilisateur dans Android Studio). C'est normal.