自定义activity窗口大小

原创 2015年07月08日 17:07:04

1.创建一个背景配置文件,放到res/drawable目录下

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <!-- 填充 -->
    <solid android:color="#9000" />
    <!-- 描边 -->
    <stroke
        android:width="1dp"
        android:color="@color/white50" />
    <!-- 圆角 -->
    <corners android:radius="3dp" />
    <!-- 间隔 -->
    <padding
        android:bottom="3dp"
        android:left="3dp"
        android:right="3dp"
        android:top="3dp" />

</shape>

2.定义一个对话框样式,放到res/values/styles.xml文件中

    <style name="Theme.Test" parent="android:style/Theme.Dialog">
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item>
        <item name="android:height">100dp</item>
        <item name="android:width">100dp</item>
        <item name="android:windowBackground">@drawable/shape_trans_rectangle</item>
    </style>

3.修改Manifes.xml,将我们刚才创建的样式应用到activity上面

        <activity
            android:name=".activity.cgo4.TestActivity"
            android:screenOrientation="landscape"
            android:theme="@style/Test" />

不出意外,到此已经大功告成.
但是我使用了v4包里的drawlayout控件,出现了如下异常:

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:15172)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4816)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
    at android.view.View.measure(View.java:15172)
    at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1850)
    at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1102)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1275)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4214)
    ....

发现问题是:
drawlayout的height和width设置为match_parent问题.
All I have is a fragment whose root view is a DrawerLayout with width and height match_parent. I get the DrawerLayout must be measured with MeasureSpec.EXACTLY exception at runtime (although it looks fine at design time now).

解决方法:
extending the DrawerLayout, and overriding onMeasure() .

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);
    }

}

Activity窗口设置大小

我们知道Activity本身是没有界面的。所以activity类创建了一个窗口,开发人员可以通过setContentView(View)接口把UI放到activity创建的窗口上。所以,我們控制窗口的...
  • xieyihua1994
  • xieyihua1994
  • 2016年09月19日 15:34
  • 2060

Android窗口管理服务WindowManagerService计算Activity窗口大小的过程分析

在Android系统中,Activity窗口的大小是由WindowManagerService服务来计算的。WindowManagerService服务会根据屏幕及其装饰区的大小来决定Activity...
  • Luoshengyang
  • Luoshengyang
  • 2013年01月14日 00:56
  • 68907

Android 设置Activity大小不再全屏原理

如何设置Activity的大小,让你的窗口看起来不再是全屏的。有些网友可能知道通过主题比如Theme.Dialog来实现,不过今天Android123告诉大家设置Activity不再全屏显示的原理 ...
  • fancylovejava
  • fancylovejava
  • 2012年10月16日 17:33
  • 5580

自定义activity窗口大小

1.创建一个背景配置文件,放到res/drawable目录下
  • CSDN1027719307
  • CSDN1027719307
  • 2015年07月08日 17:07
  • 496

Android N7.0多窗口适配开发指导

0 前言背景 本文档为多窗口适配指导文档。当前仅重点介绍有关分屏(split-screen)的相关说明,后续逐步补充其他模式的说明。 使用对象 使用Android平台的研发人员和测试人员等。 适用范...
  • jackuhan
  • jackuhan
  • 2016年07月20日 10:54
  • 7463

android 自定义activity的窗口大小(theme运用)

正常情况下,我们开发的应用程序都会上占满整个屏幕,那么怎么样才能开发出自定义窗口大小的的程序呢?如下图所示: 实现起来非常简单。 第一步,创建一个背景配置文件float_box.xml,放到re...
  • qweewqpkn
  • qweewqpkn
  • 2015年05月21日 16:45
  • 573

让Activity变成一个窗口:Activity属性设定

讲点轻松的吧,可能有人希望做出来的应用程序是一个漂浮在手机主界面的东西,那么很 简单你只需要设置 一下Activity的主题就可以了在AndroidManifest.xml 中定义 Activity...
  • leilu2008
  • leilu2008
  • 2011年08月17日 22:19
  • 4928

android 自定义Activity窗口大小

正常情况下,我们开发的应用程序都会上占满整个屏幕,那么怎么样才能开发出自定义窗口大小的的程序呢?如下图所示:    实现起来非常简单。  第一步,创建一个背景配置文件float_box....
  • changlei_shennan
  • changlei_shennan
  • 2015年03月09日 14:48
  • 400

android自定义Activity窗口大小

正常情况下,我们开发的应用程序都会上占满整个屏幕,那么怎么样才能开发出自定义窗口大小的的程序呢?如下图所示:实现起来非常简单。第一步,创建一个背景配置文件float_box.xml,放到res/dra...
  • liutao5757124
  • liutao5757124
  • 2011年04月01日 19:06
  • 662

(转)android自定义Activity窗口大小

http://www.ideasandroid.com/archives/339#more-339 第一步,创建一个背景配置文件float_box.xml,放到res/drawable下,如下所示(如...
  • jackyrongvip
  • jackyrongvip
  • 2013年07月01日 16:29
  • 616
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:自定义activity窗口大小
举报原因:
原因补充:

(最多只允许输入30个字)