- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在关注 this来自的教程,我正面临一个奇怪的问题。
我的 DrawerLayout
中的内容并不重要,但如果它的 layout_height
或 layout_width
设置为硬编码数字以外的任何值,它抛出此运行时异常。
我看到很多关于在图形布局工具中尝试呈现输出时抛出此错误的报告,但找不到任何运行时错误。
我有最新的支持库,刚刚更新到版本 21.0.2
如果可能,我想避免对我的高度和宽度进行硬编码。
文件的开头是这样的。这样,它就粉碎了。
<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" >
堆栈跟踪是
12-04 00:57:51.051: E/AndroidRuntime(26254): FATAL EXCEPTION: main
12-04 00:57:51.051: E/AndroidRuntime(26254): Process: com.lablabla.homedestroyer, PID: 26254
12-04 00:57:51.051: E/AndroidRuntime(26254): java.lang.IllegalArgumentException: DrawerLayout must be measured with MeasureSpec.EXACTLY.
12-04 00:57:51.051: E/AndroidRuntime(26254): at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:814)
12-04 00:57:51.051: E/AndroidRuntime(26254): at android.view.View.measure(View.java:17430)
12-04 00:57:51.051: E/AndroidRuntime(26254): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
12-04 00:57:51.051: E/AndroidRuntime(26254): at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
12-04 00:57:51.051: E/AndroidRuntime(26254): at android.view.View.measure(View.java:17430)
12-04 00:57:51.051: E/AndroidRuntime(26254): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
12-04 00:57:51.051: E/AndroidRuntime(26254): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
12-04 00:57:51.051: E/AndroidRuntime(26254): at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
12-04 00:57:51.051: E/AndroidRuntime(26254): at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
12-04 00:57:51.051: E/AndroidRuntime(26254): at android.view.View.measure(View.java:17430)
12-04 00:57:51.051: E/AndroidRuntime(26254): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
12-04 00:57:51.051: E/AndroidRuntime(26254): at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
12-04 00:57:51.051: E/AndroidRuntime(26254): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2560)
12-04 00:57:51.051: E/AndroidRuntime(26254): at android.view.View.measure(View.java:17430)
12-04 00:57:51.051: E/AndroidRuntime(26254): at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2001)
12-04 00:57:51.051: E/AndroidRuntime(26254): at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1141)
12-04 00:57:51.051: E/AndroidRuntime(26254): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1372)
12-04 00:57:51.051: E/AndroidRuntime(26254): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1054)
12-04 00:57:51.051: E/AndroidRuntime(26254): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5779)
12-04 00:57:51.051: E/AndroidRuntime(26254): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
12-04 00:57:51.051: E/AndroidRuntime(26254): at android.view.Choreographer.doCallbacks(Choreographer.java:580)
12-04 00:57:51.051: E/AndroidRuntime(26254): at android.view.Choreographer.doFrame(Choreographer.java:550)
12-04 00:57:51.051: E/AndroidRuntime(26254): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
12-04 00:57:51.051: E/AndroidRuntime(26254): at android.os.Handler.handleCallback(Handler.java:739)
12-04 00:57:51.051: E/AndroidRuntime(26254): at android.os.Handler.dispatchMessage(Handler.java:95)
12-04 00:57:51.051: E/AndroidRuntime(26254): at android.os.Looper.loop(Looper.java:135)
12-04 00:57:51.051: E/AndroidRuntime(26254): at android.app.ActivityThread.main(ActivityThread.java:5221)
12-04 00:57:51.051: E/AndroidRuntime(26254): at java.lang.reflect.Method.invoke(Native Method)
12-04 00:57:51.051: E/AndroidRuntime(26254): at java.lang.reflect.Method.invoke(Method.java:372)
12-04 00:57:51.051: E/AndroidRuntime(26254): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
12-04 00:57:51.051: E/AndroidRuntime(26254): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
如果必须对其进行硬编码,使其“适合”各种屏幕尺寸的最佳方法是什么?
最佳答案
尝试覆盖 DrawerLayout 的 on measure 方法
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);
}
}
关于android - 运行时 DrawerLayout 必须使用 MeasureSpec.EXACTLY 异常进行测量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27283348/
我对 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 包含工具栏。
我是一名优秀的程序员,十分优秀!