我有一些文字有一些粗体部分.直到KitKat这个策略(如本文所述)运作得非常好
我的字符串资源文件:
<string name="multi_style_text">NON-BOLD TEXT \n<b>BOLD</b></string>
Run Code Online (Sandbox Code Playgroud)
我的应用程序代码片段:
txtView.setTypeface(FontUtils.getOstrichRegular(this.getActivity()));
...
public static Typeface getOstrichRegular(Context context) {
return Typeface.createFromAsset(context.getAssets(),
"fonts/ostrich_regular.ttf");
}
Run Code Online (Sandbox Code Playgroud)
目前(在KitKat中),粗体部分未显示在自定义字体中,非粗体部分显示在自定义字体中.在以前的Android版本中,所有文本都以自定义字体显示.
是什么赋予了?
我正在使用RxJava来实质上收集单独发出的Observable列表,并将它们组合成一个Observable列表(基本上与flatMap相反).这是我的代码:
// myEvent.findMemberships() returns an Observable<List<Membership>>
myEvent.findMemberships()
.flatMap(new Func1<List<Membership>, Observable<User>>() {
@Override
public Observable<User> call(List<Membership> memberships) {
List<User> users = new ArrayList<User>();
for (Membership membership : memberships) {
users.add(membership.getUser());
}
return Observable.from(users);
}
})
.toList()
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<List<User>>() {
@Override
public void onCompleted() { }
@Override
public void onError(Throwable e) {
Timber.e(e, "Error when trying to get memberships");
}
@Override
public void onNext(List<User> users) {
Timber.d("%d users emitted", users.size());
}
})
Run Code Online (Sandbox Code Playgroud)
我注意到我的onNext永远不会被调用.我似乎无法理解这一点.如果我删除.toList调用并基本输出各个用户(如下所示),它通过发出每个项目来工作.
subscriptions //
.add(currentEvent.findMemberships()
.flatMap(new Func1<List<Membership>, Observable<User>>() { …Run Code Online (Sandbox Code Playgroud) jQuery UI选项卡具有此"功能",如果我按向上/向左或向下/向右键箭头,它会切换选项卡并加载该选项卡.
通常对于水平制表符,用户更熟悉使用向上和向下键滚动页面与移动制表符.是否可以仅为向上和向下键禁用选项卡导航?
UPDATE
根据康斯坦丁的建议,我尝试了以下代码.单击锚点选项卡后,单击向上或向下键时,它会阻止事件.如果我按下左/右键的另一个键,然后再次按下向上/向下键.它注册事件,但似乎没有停止传播.该事件可以从另一个元素开火吗?这是我的代码:
$('#tabs').keydown(function (event) {
console.log("in tabs");
if (event.keyCode == 40 || event.keyCode == 38) {
event.stopPropagation();
event.preventDefault();
return false;
};
});
$('.ui-tabs-anchor').keydown(function (event) {
console.log("in ui tabs anchor");
if (event.keyCode == 40 || event.keyCode == 38) {
event.stopPropagation();
event.preventDefault();
return false;
};
});
$('.ui-tabs-nav').keydown(function (event) {
console.log("in ui tabs nav");
if (event.keyCode == 40 || event.keyCode == 38) {
event.stopPropagation();
event.preventDefault();
return false;
};
});
Run Code Online (Sandbox Code Playgroud) 我有以下要求:
活动A --->活动B --->打开图库应用程序
传统上,我使用TaskStackBuilder启动嵌套活动.所以我会做这样的事情:
TaskStackBuilder tsb = TaskStackBuilder.create(this);
Intent activityIntentA = new Intent(this, ActivityA.class) // ...
tsb.addNextIntent(activityIntentA);
Intent activityIntentB = new Intent(this, ActivityB.class) // ...
tsb.addNextIntent(activityIntentB);
Intent galleryIntent = new Intent(Intent.ACTION_PICK);
galleryIntent.setType("image/*");
tsb.addNextIntent(galleryIntent);
// this.startActivities(new Intent[] {activityIntentA, activityIntentB, galleryIntent});
tsb.startActivities();
Run Code Online (Sandbox Code Playgroud)
(一个问题是,如果使用任务堆栈构建器或startActivities()调用之间存在差异).
但是这种方法的问题是,当galleryIntent关闭时,它不会调用onActivityResult而是调用OnCreateActivityB 的方法,这意味着我将丢失来自gallery app的信息,该信息是通过intent param"data"提供的. "在我的onActivityResult调用activityB上.
另一种解决方案是手动启动调用,因此首先调用Activity B,然后使用flag/param/argument,启动galleryIntent,然后按照常规流程执行OnActivityResult.
有没有更好的方法来解决这个要求?
我正在使用Jake Wharton的精彩插件进行Android单元测试.我努力让这些单元测试运行的目的是为了速度(TDD快速反馈和所有).
我已经设法正确配置它并运行一些示例测试,如下所示:
./gradlew test
Run Code Online (Sandbox Code Playgroud)
每当我运行测试时,我会注意到以下输出:
Relying on packaging to define the extension of the main artifact has been deprecated and is scheduled to be removed in Gradle 2.0
The Test.testReportDir property has been deprecated and is scheduled to be removed in Gradle 2.0. Please use the Test.getReports().getHtml().getDestination() property instead.
The TaskContainer.add() method has been deprecated and is scheduled to be removed in Gradle 2.0. Please use the create() method instead.
:mySampleApp:preBuild UP-TO-DATE
:mySampleApp:preDebugBuild UP-TO-DATE
:mySampleApp:preReleaseBuild …Run Code Online (Sandbox Code Playgroud) 我有一个显示许多项目的警告对话框.
private String[] choices; // populated externally
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setItems(choices, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
_callback.onChoiceSelected(which);
dialog.dismiss();
}
});
_dialog = builder.create();
Run Code Online (Sandbox Code Playgroud)
在不同的情况下(例如,如果您是管理员/客人),您将拥有不同数量的"选择".在我的espresso测试中,我基本上试图测试存在的项目数量.
public void test_ViewsSetupCorrectly() {
onView(withId(R.id.settings)).perform(click());
onView(ViewMatchers.withChild(withClassName(Matchers.equalToIgnoringCase("TextView")))).check(matches(isDisplayed()));
/*// What I would ideally like ... but doesn't work as well :( :
onView(withClassName(equalToIgnoringWhiteSpace("DialogTitle"))).check(matches(hasProperty("child-count",
is(new Integer(1))
)));*/
}
Run Code Online (Sandbox Code Playgroud)
这些基本上抛出一个异常,如下:
我认为onData调用仅用于执行操作?我不是必须采取行动.谁能帮我实际测试一下?
com.google.android.apps.common.testing.ui.espresso.NoMatchingViewException: No views in hierarchy found matching: has child: with class name: eqIgnoringCase("TextView")
If the target view is not part of …Run Code Online (Sandbox Code Playgroud) 我正在努力熟悉RxJava.这是我想要实现的用例:
我的屏幕上有一个按钮,我正在尝试收集水龙头的数量.因此,如果用户点击按钮,则会注册单击并生成日志.现在,如果用户单击按钮两次,则它会记录两次点击,收集它们并输出2而不是1.
基本上,我试图在一段时间内累积点击次数,然后吐出最终结果.我猜" 缓冲 "是我需要使用的方法.我在Android中编写了一个快速示例(代码如下),但缓冲方法似乎并不像收集所有事件输入和吐出集合那么简单.
public class DemoFragment
extends Fragment {
private int _tapCount = 0;
private Observable<List<Integer>> _bufferedObservable;
private Observer<List<Integer>> _observer;
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
_setupLogger();
_bufferedObservable = _getBufferedObservable();
_observer = _getObserver();
}
// the library butterknife allows this
@OnClick(R.id.btn_start_operation)
public void onButtonTapped() {
_log("GOT A TAP");
_bufferedObservable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(_observer);
}
private Observable<List<Integer>> _getBufferedObservable() {
return Observable.create(new Observable.OnSubscribe<Integer>() {
@Override
public void call(Subscriber<? super Integer> subscriber) {
subscriber.onNext(1); // send one tap here
}
}).buffer(2, …Run Code Online (Sandbox Code Playgroud) 我在Android上尝试使用Otto,我试图将我的片段中的消息发送回活动.这是我的代码的基础知识:
我的巴士供应商:
public final class BusProvider {
private static final Bus mInstance = new Bus();
private BusProvider() {}
public static Bus getBusProviderInstance() {
return mInstance;
}
}
Run Code Online (Sandbox Code Playgroud)
我的活动有以下代码:
public class MyActivity
extends BaseActivity {
// ....
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
BusProvider.getBusProviderInstance().register(this);
// ....
}
@OnClick(R.id.profile_image)
public void onImageClicked() {
// ...
MyFragment fragment = MyFragment.newInstance(choices);
fragment.show(getFragmentManager(), "myChoices");
}
@Subscribe
public void onButtonChoicePicked(MyFragment.ChoicePickedEvent event) {
Toast.makeText(this, "reaching here", Toast.LENGTH_SHORT).show();
}
@Override
protected void onStop() {
super.onStop();
BusProvider.getBusProviderInstance().unregister(this);
} …Run Code Online (Sandbox Code Playgroud) 我不得不使用EditTexts重新创建AutoCompleteTextViews的功能(出于不同的原因*,这可能是另一个问题,但我现在正走这条路).
每当EditText上的Text发生更改时,我都会通过发出api调用来完成所有功能.我通过使用TextWatcher(覆盖afterTextChanged方法)来完成此操作.
有没有办法可以控制,监听器触发调用的方式?
这是我的用例:
我正在寻找加州.
我查了一下.长度为3然后开始发射呼叫.所以当前发送的API调用数= 8
如果我收到新的文字更改,有没有办法取消已解雇的活动?因此,当用户键入加利福尼亚时,我会等到没有输入新文本的间隙,然后激活对我的API的调用?
它不一定非常准确.这里和那里的额外事件是完全可以接受的.我希望将从8点发射的事件数量减少到至少3点.
我想在不同的列表视图中显示自动完成结果,而不是自动完成文本视图旁边的弹出窗口.
嗨,我有以下要求.
我想根据存在的级别数在方法中创建可变数量的String数组.例如
我有一个从jsp页面收到的变量numOfLevels(int).
基于此,我想创建:
String[] level1;
String[] level2;
String[] level3;
String[] level4;
Run Code Online (Sandbox Code Playgroud)
等......
我知道我的要求可以用Hashmaps处理,我最终还是采取了这样做,但我很好奇如何用Java中的反射实现这一点.
提前谢谢了.
嗯像一位评论者指出的那样,在那里有一个几乎相似的问题是在那里用Java动态生成Variables的名字吗?
感谢人们的宝贵投入!
android ×7
java ×5
frp ×2
rx-java ×2
arrays ×1
butterknife ×1
fonts ×1
gradle ×1
hamcrest ×1
jquery-ui ×1
junit ×1
otto ×1
reflection ×1
robolectric ×1
textview ×1
textwatcher ×1
types ×1
unit-testing ×1