小编are*_*lek的帖子

TextInputLayout中的错误文本由键盘覆盖

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

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

当第一个参数是具有一个方法的类时,无法用lambda替换SAM构造函数

我对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)

java android interop kotlin android-architecture-components

9
推荐指数
1
解决办法
873
查看次数

为什么有些Boost函数不需要使用名称空间前缀

考虑这段代码(或实例):

#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,degreeadjacent_vertices那来自无Boost库工作boost::空间前缀?

对我来说最令人费解的是,根据具体情况,有时需要前缀.下面是一个示例,当使用不同的图形结构时,会产生可以通过前缀修复的编译错误boost::make_iterator_range.

我看了一下 …

c++ boost boost-graph argument-dependent-lookup

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

R与ddply的总和和平均值

我的数据框有两列用作分组键,17列需要在每个组中求和,而一列应该是平均值.让我来说明这一点不同的数据帧,diamondsggplot2.

我知道我可以这样做:

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)

总结一下:

  • 我不希望有明确的输入所有17列,像第一个例子用呢x,yz.
  • 理想情况下,我想通过一次调用来完成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)

r plyr

5
推荐指数
3
解决办法
5460
查看次数

ArgumentCaptor 与 InOrder 以验证具有不同参数的后续回调

我测试使用生成的我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)

mockito kotlin

5
推荐指数
1
解决办法
1653
查看次数

python在Mathematica中是否具有类似“ Chop”的功能?

我有一个很大的矩阵,其中有很多元素非常小,我认为这些元素为0。在Mathematica中,有一个函数叫做Chop

Chop[expr]expr精确的整数0 替换接近零的近似实数。

细节

  • Chop[expr,delta]替换绝对幅度小于 delta0的数字。
  • Chop使用默认公差10 -10

因此,我想问一下在Python中是否有类似这样的函数。

python python-3.x

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

默认构造函数和POD

我得到了POD的含义,我知道当我在C++中声明一个结构时

struct f {};
Run Code Online (Sandbox Code Playgroud)

有一个默认的构造函数,一个默认的复制构造函数,一个默认的析构函数等.(如果我得到了这个)

我的问题是:如何在没有隐式构造函数/析构函数等的情况下使用纯数据(如4个int值)声明POD结构.阻碍?

我错过了什么?

c++

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

计算列表中字符串的字符并分组

使用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)

是否有内置的容器或功能,以促进这一点?

python python-3.x

-3
推荐指数
1
解决办法
1940
查看次数