TextInputLayout包含一个EditText,后者又接收来自用户的输入.使用Android设计支持库中引入的TextInputLayout,我们应该将错误设置为持有EditText而不是EditText本身的TextInputLayout.编写UI时,将只关注EditText而不是整个TextInputLayout,这可能导致键盘覆盖错误.在以下GIF通知中,用户必须先删除键盘才能看到错误消息.这与设置IME动作以使用键盘继续前进相结合会导致真正令人困惑的结果.
布局xml代码:
<android.support.design.widget.TextInputLayout
android:id="@+id/uid_text_input_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:errorEnabled="true"
android:layout_marginTop="8dp">
<EditText
android:id="@+id/uid_edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:hint="Cardnumber"
android:imeOptions="actionDone"/>
</android.support.design.widget.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)
Java代码将错误设置为TextInputLayout:
uidTextInputLayout.setError("Incorrect cardnumber");
Run Code Online (Sandbox Code Playgroud)
如何在用户没有看到错误消息的情况下确保错误消息可见?有可能移动焦点吗?
android android-layout android-design-library androiddesignsupport android-textinputlayout
我对SAM构造函数感到困惑,我有这个Java类:
public class TestSam<T> {
public void observe(ZeroMethods zero, Observer<T> observer) {
}
public void observe(OneMethod one, Observer<T> observer) {
}
public void observe(TwoMethods two, Observer<T> observer) {
}
public interface Observer<T> {
void onChanged(@Nullable T t);
}
public interface ZeroMethods {
}
public interface OneMethod {
First getFirst();
}
public interface TwoMethods {
First getFirst();
Second getSecond();
}
public interface First {
}
public interface Second {
}
}
Run Code Online (Sandbox Code Playgroud)
而这个Kotlin代码:
fun testSam(
test: TestSam<String>,
zero: TestSam.ZeroMethods,
one: TestSam.OneMethod,
two: …
Run Code Online (Sandbox Code Playgroud) 考虑这段代码(或实例):
#include <iostream>
#include <boost/graph/adjacency_list.hpp>
#include <boost/range/iterator_range.hpp>
using std::cout;
int main() {
boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS> g;
add_edge(0, 1, g);
add_edge(1, 2, g);
for(auto v : make_iterator_range(vertices(g))) {
cout << v << " has " << degree(v, g) << " neighbor(s): ";
for(auto w : make_iterator_range(adjacent_vertices(v, g))) cout << w << ' ';
cout << '\n';
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么功能add_edge
,make_iterator_range
,vertices
,degree
和adjacent_vertices
那来自无Boost库工作boost::
空间前缀?
对我来说最令人费解的是,根据具体情况,有时需要前缀.下面是一个示例,当使用不同的图形结构时,会产生可以通过前缀修复的编译错误boost::make_iterator_range
.
我看了一下 …
我的数据框有两列用作分组键,17列需要在每个组中求和,而一列应该是平均值.让我来说明这一点不同的数据帧,diamonds
从ggplot2
.
我知道我可以这样做:
ddply(diamonds, ~cut, summarise, x=sum(x), y=sum(y), z=sum(z), price=mean(price))
Run Code Online (Sandbox Code Playgroud)
但是虽然对于3列是合理的,但对于其中的17列是不可接受的.
在研究这个时,我发现了这个colwise
功能,但我想出的最好的是:
cbind(ddply(diamonds, ~cut, colwise(sum, 7:9)), price=ddply(diamonds, ~cut, summarise, mean(price))[,2])
Run Code Online (Sandbox Code Playgroud)
是否有可能进一步改善这一点?我想以更简单的方式做这件事,比如(虚构的命令):
ddply(diamonds, ~cut, colwise(sum, 7:9), price=mean(price))
Run Code Online (Sandbox Code Playgroud)
要么:
ddply(diamonds, ~cut, colwise(sum, 7:9), colwise(mean, ~price))
Run Code Online (Sandbox Code Playgroud)
总结一下:
x
,y
和z
.ddply
,而不需要诉诸cbind
(或类似的功能),如第二个例子.作为参考,我期望的结果是5行和5列:
cut x y z price
1 Fair 10057.50 9954.07 6412.26 4358.758
2 Good 28645.08 28703.75 17855.42 3928.864
3 Very Good 69359.09 69713.45 43009.52 3981.760
4 Premium 82385.88 81985.82 …
Run Code Online (Sandbox Code Playgroud) 我测试使用生成的我DAO类Room
从库Architecture Components
。我想检查LiveData
连接多个表的查询返回的数据是否会在数据更改时更新。
我从使用InOrder
验证开始,但发现无论我想断言什么参数,Mockito 都会说该方法是用不同的方法调用的(当我将断言更改为那个时,它会说是另一个)。
使用ArgumentCaptor
结果证明可以很好地用于此目的,这是这个问题的主题:
ArgumentCaptor
验证在这里起作用,但InOrder
不起作用?查看有关如何使用不同 params 验证多个方法调用的问题的答案,这两种方法都应该可以正常工作。
这是我的测试的简化版本,展示了这个问题:
package com.example
import com.nhaarman.mockito_kotlin.argumentCaptor
import com.nhaarman.mockito_kotlin.check
import com.nhaarman.mockito_kotlin.mock
import org.junit.Assert.assertEquals
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mockito.*
import org.mockito.junit.MockitoJUnitRunner
@Suppress("IllegalIdentifier")
@RunWith(MockitoJUnitRunner::class)
class MultipleCallbacksVanillaTest {
private val java = Language("Java")
private val javascript = Language("JavaScript")
private val kotlin = Language("Kotlin")
private val firstList = emptyList<Language>()
private val secondList = listOf(java)
private val thirdList = listOf(java, javascript, …
Run Code Online (Sandbox Code Playgroud) 我有一个很大的矩阵,其中有很多元素非常小,我认为这些元素为0。在Mathematica中,有一个函数叫做Chop
:
Chop[expr]
用expr
精确的整数0 替换接近零的近似实数。细节
Chop[expr,delta]
替换绝对幅度小于delta
0的数字。Chop
使用默认公差10 -10。
因此,我想问一下在Python中是否有类似这样的函数。
我得到了POD的含义,我知道当我在C++中声明一个结构时
struct f {};
Run Code Online (Sandbox Code Playgroud)
有一个默认的构造函数,一个默认的复制构造函数,一个默认的析构函数等.(如果我得到了这个)
我的问题是:如何在没有隐式构造函数/析构函数等的情况下使用纯数据(如4个int值)声明POD结构.阻碍?
我错过了什么?
使用Python 3计算列表(字符串)的长度直方图的最佳方法是什么?
该程序将计算所有元素的长度,具有相同长度的组元素并返回每个组的大小,与该组中元素的长度配对.
对于以下输入列表:
lis = [ "this" , "is" , "what" , "i" , "have" , "to" , "do" ]
Run Code Online (Sandbox Code Playgroud)
预期的结果是:
Letters per word:
3 with 4 letters
3 with 2 letters
1 with 1 letters
Run Code Online (Sandbox Code Playgroud)
是否有内置的容器或功能,以促进这一点?
android ×2
c++ ×2
kotlin ×2
python ×2
python-3.x ×2
android-architecture-components ×1
boost ×1
boost-graph ×1
interop ×1
java ×1
mockito ×1
plyr ×1
r ×1