- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
堆栈跟踪:
09-10 07:56:56.448 24867-24867/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.IllegalArgumentException: DrawerLayout must be measured with MeasureSpec.EXACTLY.
at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:814)
at android.view.View.measure(View.java:15848)
at com.android.internal.widget.ActionBarView.onMeasure(ActionBarView.java:1098)
at android.view.View.measure(View.java:15848)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5012)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at com.android.internal.widget.ActionBarContainer.onMeasure(ActionBarContainer.java:271)
at android.view.View.measure(View.java:15848)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5012)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1052)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:590)
at android.view.View.measure(View.java:15848)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5012)
at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:229)
at android.view.View.measure(View.java:15848)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5012)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2189)
at android.view.View.measure(View.java:15848)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1905)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1104)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1284)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5481)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
at android.view.Choreographer.doCallbacks(Choreographer.java:562)
at android.view.Choreographer.doFrame(Choreographer.java:532)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Logcat没有指出错误行,我贴出相关代码
我在 DrawerLayout 遇到非法参数异常,必须在运行时使用 MeasureSpec.Exactly 进行测量。
BaseActivity.java:
private ListView mDrawerList;
private DrawerLayout mDrawerLayout;
private ArrayList<Chapter> chapterArray;
ChapterListAdapter adapter;
SqliteDbHelper dbHelper;
dbHelper = new SqliteDbHelper(this);
dbHelper.openDataBase();
LayoutInflater mInflater = (LayoutInflater) getApplicationContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View mCustomView = mInflater.inflate(R.layout.custom_actionbar, null);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.list_menu);
chapterArray=new ArrayList<Chapter>();
chapterArray=dbHelper.getChapterDetails();
adapter = new ChapterListAdapter(this,chapterArray);
mDrawerList.setAdapter(adapter);
custom_actionbar.xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#5467F7">
<TextView
android:id="@+id/title_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center"
android:text="Chapters"
android:textColor="#FFFFFF"
android:textStyle="bold" />
</RelativeLayout>
<ListView
android:id="@+id/list_menu"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="#E36666"
android:choiceMode="singleChoice"
android:dividerHeight="1dp"
/>
</android.support.v4.widget.DrawerLayout>
我不知道如何解决这个问题。任何人都可以帮助我解决这个问题。谢谢。
最佳答案
错误:
Illegal Argument Exception - DrawerLayout must be measured with MeasureSpec.EXACTLY
根据错误日志,我可以建议创建自定义类来扩展 DrawerLayout
并强制执行正确的 Measure_Specs
:
public class MyDrawerLayout extends DrawerLayout {
public MyDrawerLayout(Context context) {
super(context);
}
public MyDrawerLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyDrawerLayout(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);
}
}
或作为临时解决方法,尝试将 layout_width
和/或 layout_height
设置为特定大小(例如 500dp),而不是 match_parent
。
编辑:
BaseActivity.java
import com.steve.database.MyDrawerLayout;
private MyDrawerLayout mDrawerLayout;
private ListView mDrawerList;
LayoutInflater mInflater = (LayoutInflater) getApplicationContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View mCustomView = mInflater.inflate(R.layout.custom_actionbar, null);
mDrawerLayout = (MyDrawerLayout)mCustomView.findViewById(R.id.drawer_layout);
mDrawerList = (ListView)mCustomView.findViewById(R.id.list_menu);
关于android - 非法参数异常 - DrawerLayout 必须使用 MeasureSpec.EXACTLY 进行测量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32515527/
我对 MeasureSpec.UNSPECIFIED 和 MeasureSpec.AT_MOST 有点困惑。我知道当 match_parent 或常量尺寸值设置为 layout_width 或 lay
我正在尝试使用以下代码测量布局的高度: int widthMeasureSpec = View.MeasureSpec.makeMeasureSpec(toExpand.getWidth(), Vie
我正在学习《专业 Android 4 应用程序开发》的第 4 章,它告诉我尺寸值和模式都是从传递给 onMeasure() 方法的 widthMeasureSpec 和 heightMeasureSp
我遇到了这个问题:https://stackoverflow.com/questions/20121696/slidingmenu-bug-in-android-4-3 但现在我已经修复了,我想分享我
Android Studio 0.8.10 你好 我正在尝试实现抽屉导航,但我一直收到此错误。该 fragment 扩展了 ListFragment 并且我已经覆盖了 getview 以扩充下面的布局
我已经搜索过有关此问题的答案,但没有找到解决方案。所以我在这里请求帮助。我正在创建自定义 View 。我已经覆盖了 onMeasure。代码如下。 @Override protected
我正在尝试实现抽屉导航,但我不断收到此错误。我看到了类似的问题,但对我没有用。我有以下布局activity_main2.xml: 在我的 activit
堆栈跟踪: 09-10 07:56:56.448 24867-24867/? E/AndroidRuntime﹕ FATAL EXCEPTION: main java.lang.Illega
我正在关注 this来自的教程,我正面临一个奇怪的问题。 我的 DrawerLayout 中的内容并不重要,但如果它的 layout_height 或 layout_width 设置为硬编码数字以外的
我正在编写自己的布局,扩展 ViewGroup 类。您需要覆盖的方法之一是 onMeasure() 方法。在此方法中,父 View (将包含我的布局的 View )将传递我的布局可能具有的宽度和高度。
我使用以下两种方法 ( inspired/copied from here ) expand 和 collapse ScrollView 中的一些 TextViews > 点击“header”-Tex
我将 Auth0 与 Xamarin Forms PCL 库一起使用。我有以下 MainPage 类: namespace LoginPattern { public class MainPa
在我的应用程序中,我使用 Xamarin Shell 创建底部标签栏导航,如下所示: MainPage.xaml
这是我的 xml 布局文件: 但是当我启动我的 Android 应用程序时,出现错误(在运行时): E/AndroidRuntime: FATAL
嗨,我正在尝试在饼图顶部实现一个抽屉导航,但它不断崩溃,但它似乎打开了其他 Activity ,非常感谢。我使用 apptheme 作为主题,使用 MpAndroidChart api 作为饼图 Ja
这是我的 mainlayout 文件。 这是我编写与抽屉导航相关的代码的主要布局文件,还使用 include 包含工具栏。
我是一名优秀的程序员,十分优秀!