小编Pin*_*Pin的帖子

SystemSystemWindows究竟做了什么?

我正在努力理解这个概念,fitsSystemWindows因为它取决于它做不同的事情.根据官方文件,它是一个

布尔内部属性,用于根据系统窗口(如状态栏)调整视图布局.如果为true,则调整此视图的填充以为系统窗口留出空间.

现在,检查View.java类我可以看到,当设置true为时,窗口插入(状态栏,导航栏...)将应用于视图填充,这根据上面引用的文档工作.这是代码的相关部分:

private boolean fitSystemWindowsInt(Rect insets) {
    if ((mViewFlags & FITS_SYSTEM_WINDOWS) == FITS_SYSTEM_WINDOWS) {
        mUserPaddingStart = UNDEFINED_PADDING;
        mUserPaddingEnd = UNDEFINED_PADDING;
        Rect localInsets = sThreadLocal.get();
        if (localInsets == null) {
            localInsets = new Rect();
            sThreadLocal.set(localInsets);
        }
        boolean res = computeFitSystemWindows(insets, localInsets);
        mUserPaddingLeftInitial = localInsets.left;
        mUserPaddingRightInitial = localInsets.right;
        internalSetPadding(localInsets.left, localInsets.top,
                localInsets.right, localInsets.bottom);
        return res;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

随着新材料设计的出现,有一些新的类广泛使用这个标志,这就是混乱的来源.在许多来源中fitsSystemWindows被提到作为设置在系统栏后面放置视图的标志.看到这里.

在文档ViewCompat.javasetFitsSystemWindows说:

设置此视图是否应考虑系统屏幕装饰,例如状态栏和插入其内容; 也就是说,控制是否执行{@link View#fitSystemWindows(Rect)}的默认实现.有关详细信息,请参阅该方法.

据此, …

android android-layout

113
推荐指数
3
解决办法
4万
查看次数

是否必须检查前提条件?

这些天我习惯于检查每个函数的每个前提条件,因为我从大学的一个OS编程课程中习惯了这个习惯.

另一方面,在软件工程课程中,我们被告知只应检查一个共同的前提条件,例如,如果一个函数委托给另一个函数,第一个函数应检查它们,但在第二个函数中再次检查它们是多余的.

我确实看到了冗余点,但我确实觉得总是检查它们更安全,而且你不必跟踪它们之前检查的位置.

这里的最佳做法是什么?

design-by-contract

18
推荐指数
2
解决办法
2066
查看次数

Android Studio中的自动代码格式

有可能format code automatically on save吗?我已经看到了一个解决方案,其中提出了一个分配给快捷方式的宏,但我需要能够将其设置为项目设置.这样,任何加入我们项目的人都不必为自己配置宏.

在Eclipse中,使用save actions并将配置文件置于版本控制下很容易实现.Android Studio可以实现吗?

android intellij-idea

8
推荐指数
5
解决办法
3435
查看次数

滚动到顶部或底部后,需要单击NestedScrollView中的项目两次

我有NestedScrollView一个CoordinatorLayout.在NestedScrollView我的内部有LinearLayout一些组件,其中一些是按钮.组件没有自定义,我只有标准的布局参数.

我面临的问题是,每当我NestedScrollView向顶部或底部投掷并看到过度滚动边缘时,视图上的所有按钮在第一次按下时都不会处理任何触摸.需要第二次触摸,从那时起,任何按钮都会在第一时间响应.这就好像焦点丢失了,第一次触摸是将它恢复到视图中,第二种触摸是真正处理的焦点.

我试过了:

  1. 设置focusable=true,focusableInTouchMode=truedescendantFocusability=afterDescendants.不行.

  2. 重写NestedScrollViewonScrollChanged,当我们到达顶/底和手动请求最接近的视图的焦点来检测.不起作用,会发生奇怪的事情,例如工具栏上的视图聚焦......

  3. 模拟LinearLayout通道上的触摸事件dispatchTouchEvent().

他们都没有工作.非常感谢,如果你能帮助我看到光明!

编辑:似乎与有关.

android

7
推荐指数
1
解决办法
1886
查看次数

指向auto_ptr而不是经典双指针的指针

我对智能指针很新,并试图重构一些现有代码以使用auto_ptr.我的问题是关于双指针及其auto_ptr等价物,如果这是有道理的.

我有一个接受双指针作为参数的函数,函数为它分配资源:

void foo ( Image** img ) { ... *img = new Image(); ...}
Run Code Online (Sandbox Code Playgroud)

然后使用此函数,如下所示:

Image* img = NULL;
foo ( &img );
...
delete img;
Run Code Online (Sandbox Code Playgroud)


我想使用auto_ptr来避免必须显式调用delete.以下是否正确?

void foo ( auto_ptr<Image>* img ) { ... *img = auto_ptr<Image>(new Image()); ...}
Run Code Online (Sandbox Code Playgroud)

然后

auto_ptr<Image> img = NULL;
foo ( &img );
Run Code Online (Sandbox Code Playgroud)

谢谢.

c++ smart-pointers

2
推荐指数
1
解决办法
1387
查看次数

Hibernate中基本类型的ArrayList

我有一个关于整数的ArrayList或一般的原始类型的问题.假设我正在设计一个POS程序,每个产品可能有几个价格.

假设我可以用ints 表示价格值,在Product类中我有字段ArrayList<Integer> prices.使用Hibernate进行映射的最佳方法是什么?

我可以将它映射到一个product_prices表,其中包含一个包含价格值的字段和一个引用相关产品的外键字段,但这似乎有些过分.

另一方面,我可以连接a中的所有价格String并将其存储为products表中的字段,例如,用分号分隔价格.这样我就节省了一张桌子和一张未来select,但它似乎并不是OO.

这里最好做什么?

java database-design hibernate

2
推荐指数
2
解决办法
4730
查看次数