小编bea*_*ean的帖子

将图标添加到Android导航抽屉?

我已经在网上搜索了这个问题的答案,但似乎找不到一个,即使在官方的Android文档中也是如此.

我正在创建一个实现Android新导航抽屉布局的应用程序.可以在此处此处找到此布局的文档.

在设计文档以及Facebook和Google Currents等众多流行应用中,抽屉物品前面都有图标.

设计文档本身在"导航抽屉的内容"下提到它们

导航目标可以具有可选的前导图标以及尾随计数器.使用计数器通知用户相应视图中数据的更改状态.

不幸的是,Developer文档没有提到如何在此设置中实现图标.它描述了如何实现项目列表:

public class MainActivity extends Activity {
private String[] mPlanetTitles;
private ListView mDrawerList;
...

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mPlanetTitles = getResources().getStringArray(R.array.planets_array);
    mDrawerList = (ListView) findViewById(R.id.left_drawer);

    // Set the adapter for the list view
    mDrawerList.setAdapter(new ArrayAdapter<String>(this,
            R.layout.drawer_list_item, mPlanetTitles));
    // Set the list's click listener
    mDrawerList.setOnItemClickListener(new DrawerItemClickListener());

    ...
}
}
Run Code Online (Sandbox Code Playgroud)

因为它们的实现使用getStringArray(),所以我无法想到修改行项目的xml以包含图标.

这是令人困惑的,因为许多应用程序似乎在每个文本项之前实现图标就好了,而设计文档甚至引用了添加图标.我觉得必须有一些简单的API调用来完成添加这些图标,但到目前为止我发现的唯一实现看起来非常复杂.

有谁知道如何在导航抽屉项目中添加图标?有没有办法通过一个简单的API调用来做到这一点,或者所有这些公司(Facebook,谷歌等)必须找到解决问题的方法?

感谢大家.

icons android android-layout

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

Jest:当同一模块也命名为export时,如何模拟默认导出组件?

我有一个ES6模块,默认情况下导出一个React Component类,但也导出一个普通的JS函数作为命名导出.在测试使用此模块的其他软件包时,我想模拟默认导出组件和命名导出函数,以保持单元测试的纯净.

该模块看起来像这样:

import React, { Component } from 'react';

export default class MyComponent extends Component {
  render() {
    return <div>Hello</div>
  }
}

export function myUtilityFunction() { return 'foo' };
Run Code Online (Sandbox Code Playgroud)

我想使用以下语法来模拟导出:

import React from 'react';
import MyComponent, { myUtilityFunction } from './module';

jest.mock('./module');
MyComponent.mockImplementation(() => 'MockComponent');
myUtilityFunction.mockImplementation(() => 'foo');
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用此语法时,在其他组件中使用时,MyComponent似乎不会被模拟.当我尝试像这样模拟MyComponent并自己渲染它时,它会呈现为null.

这种行为很奇怪,因为如果我使用完全相同的语法,但两个导入都是JavaScript函数,则模拟按预期工作.请参阅我在此处打开的StackOverflow问题,该问题确认当导入都是函数时语法有效.

这是一个演示问题的GitHub仓库,以及我尝试过的几个解决方案:https://github.com/zpalexander/jest-enzyme-problem

您可以构建repo并使用yarn install && yarn test运行测试

谢谢!

javascript unit-testing reactjs jestjs es6-modules

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

Jest:模拟ES6模块,默认和命名导出

我有一个带有默认和命名导出的ES6模块:

/** /src/dependency.js **/

export function utilityFunction() { return false; }

export default function mainFunction() { return 'foo'; }
Run Code Online (Sandbox Code Playgroud)

它被第二个ES6模块使用:

/** /src/myModule.js **/

import mainFunction, { utilityFunction } from './dependency';

// EDIT: Fixed syntax error in code sample
// export default myModule() {
export default function myModule() {
    if (!utilityFunction()) return 2;
    return mainFunction();
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用Jest为myModule.js编写单元测试.但是当我尝试模拟命名和默认导入时,Jest似乎只模拟命名导入.它继续使用默认导入的实际实现,并且即使在我调用.mockImplementation()之后也不允许我模拟它.这是我正在尝试使用的代码:

/** 
  * Trying to mock both named and default import. 
  * THIS DOESN'T WORK.
  */

/** /tests/myModule.test.js **/

import mainFunction, { utilityFunction } from …
Run Code Online (Sandbox Code Playgroud)

javascript unit-testing jestjs es6-modules

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