小编Sco*_*ott的帖子

ExpandableListView - 将选定的子项保持为"已按下"状态

我在左侧导航中使用ExpandableListView作为平板电脑屏幕.

当用户在我的可扩展列表中按下组的子项时,我希望将该子项保持在按下状态,以便用户知道正在显示右手内容的子项.

对于ListView,我能够在代码中使用此行完成此效果:

getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
Run Code Online (Sandbox Code Playgroud)

然后应用此选择器:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_activated="true" android:drawable="@drawable/menu_item_pressed" />
<item android:state_pressed="false" android:state_focused="false" android:drawable="@drawable/menu_item_normal" />
<item android:state_pressed="true" android:drawable="@drawable/menu_item_pressed" />
<item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/menu_item_pressed" />
Run Code Online (Sandbox Code Playgroud)

按下listView项后,listView项上的"state_activiated"为true.

我希望这个技术对我的expandableListView有用,但事实并非如此.我用了:

getExpandableListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
Run Code Online (Sandbox Code Playgroud)

然后使用上面相同的选择器,但它不起作用.我还尝试过其他状态,例如state_selected和state_checked,这些状态也不起作用.

上面的选择器正确应用按下和未按下状态.看起来使用ExpandableListView,按下一个孩子后状态不会被"激活".

任何帮助表示赞赏.谢谢!

android android-widget

16
推荐指数
3
解决办法
2万
查看次数

如何使用 mockk 模拟新对象

我正在尝试使用 mockk 编写单元测试。

我试图弄清楚如何模拟对象的新实例。

例如,使用 PowerMockito 我们会这样写:

PowerMockito.whenNew(Dog::class.java).withArguments("beagle").thenReturn(mockDog)
Run Code Online (Sandbox Code Playgroud)

如果我的测试的预期结果是模拟狗,我希望能够断言它等于我的实际结果:

assertEquals(mockDog, actualResult)
Run Code Online (Sandbox Code Playgroud)

我将如何使用 mockk 完成此操作?

提前致谢。

kotlin mockk

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

使用makeSceneTransitionAnimation时不会出现波纹效应

我有一个rippleDrawable,我用它作为LinearLayout的背景:

<LinearLayout
    android:id="@+id/card_layout"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_alignParentBottom="true"
    android:clickable="true"
    android:background="@drawable/ripple"
    android:orientation="vertical" >
Run Code Online (Sandbox Code Playgroud)

我想开始点击布局的新活动.当我刚做一个startActivity()时,纹波效果很好 - 你可以看到大部分的涟漪效应发生,然后显示新的屏幕.

但是,如果我使用ActivityOptionsCompat.makeSceneTransitionAnimation启动活动,则在点击布局时不会发生涟漪效应.注意,在这种情况下,长按仍会显示纹波.

我也在按钮上尝试了这个,并看到了相同的结果.

所以就像makeSceneTransitionAnimation发生得太快,或者覆盖了涟漪效应.我希望在场景转换动画发生之前完成涟漪或者至少有一些涟漪.我不确定这是否与渲染线程中的波纹和过渡竞争有关?

我试着在被调用的活动上调用postponeEnterTransition.但是这不起作用 - 被调用的活动仍然立即显示,然后转换被推迟,直到你再次启动它.

任何人对我可能做错了什么有任何想法?

我正在使用API​​ 21(没有AppCompat).在此先感谢您的帮助.

android android-5.0-lollipop

6
推荐指数
1
解决办法
1147
查看次数

为Android配置虚拟机加速

我正在尝试使用以下说明为VM加速设置模拟器:使用Android模拟器.

设置说:

您必须使用使用x86系统映像目标的AVD.使用此处描述的仿真器配置无法加速使用基于ARM的系统映像的AVD.

然后它说:

要在模拟器中使用虚拟机加速,您需要以下版本的Android开发工具.使用Android SDK Manager安装以下组件:

Android SDK工具,修订版17或更高版本

基于Android x86的系统映像

我有最新的Android SDK工具.但是在我的SDK Manager中,我没有任何"基于Android x86的系统"可供安装.我也没有任何x86系统映像选项可以安装任何特定的API版本.

对于那些成功设置此功能的用户,您是如何使用Android SDK Manager安装"基于Android x86的系统映像"的?

我相信我已经完成了所需的所有其他设置,包括运行IntelHAXM.exe并确认虚拟化驱动程序运行正常.

在此先感谢您的帮助.

android android-emulator

4
推荐指数
1
解决办法
3375
查看次数