小编Dre*_*Dre的帖子

如何设置android文本视图以剪切任何不适合布局的字母

我连续几个TextViews,我希望第一个TextView占用所有备用空间,但如果TextViews的组合长度太长而无法放在一行上,我希望第一个TextView被切断.

至于备用空间,我将第一个TextView的layout_width设置为匹配parent和layout_weight为1.我只是不能让它切断任何多余的字母,所以它适合一行.

我想要的是像'Text'和'Long Text'这样的东西

'Text   :data'
'Long T :data'
Run Code Online (Sandbox Code Playgroud)

所以'长文'被切断为'Long T'以适应.

我得到的是

'Text   :data'
'Long Text :d'
Run Code Online (Sandbox Code Playgroud)

谢谢!

layout android textview

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

Android Instrumentation 在协程中被阻止

我的活动有一个 EditText 和一个按钮。当按钮被按下时,一个长时间运行的函数被调用。在此期间,应禁用 EditText。当函数完成后,应该重新启用 EditText。这在运行应用程序时工作正常,但是我编写了一个 Espresso 单元测试来测试这种行为,该行为似乎行为不正确。

看起来长时间运行的功能会暂停运行超过 3 秒的单元测试。一旦长时间运行的函数完成,单元测试然后测试 EditText 是否被禁用,它不再是因为任务完成并且loading变量被设置回false

我希望单元测试然后启动该函数,因为它在协程中运行,它将继续到下一行以检查 EditText 是否被禁用。

我已经尝试了 CommonPool、UI、launch、async、Deferred 等的所有不同变体,但似乎没有得到正确的行为。

suspend fun getData(): String {
    // simulate network request delay
    delay(3000)                       
    return "Hello, world!"
}
Run Code Online (Sandbox Code Playgroud)

fun onButtonClicked() {
    // data binding field to disable EditText
    loading = true 

    launch(CommonPool) {
        // make "network call"
        val data = getData().await()

        // reenable EditText
        loading = false
    }
}
Run Code Online (Sandbox Code Playgroud)

@Test
fun disableEditText() {
    // check the EditText starts off enabled
    onView(withId(R.id.edit_text))
            .check(matches(isEnabled())) …
Run Code Online (Sandbox Code Playgroud)

android coroutine kotlin android-espresso

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

在移动应用中安全地对密码进行硬编码

我有一个Web服务器,它创建一个QR码,它是[用户名] + [用户名] [密码]的md5哈希值.其中[username]是当时登录的用户.其中[密码]是我设置的系统密码,对于Web服务器和应用程序是通用的.

我的Android/iPhone/BlackBerry/Windows应用程序将扫描此QR码并使用QR码中提供的[用户名]与[密码]进行哈希,这将告诉我QR码来自我的服务器.

显然,如果有人要抓住[密码],那么他们可以创建不是来自我的网络服务器的QR码.那么无论如何要安全地存储[密码]在我的应用程序中,或者有人反编译.apk并在classes.dex中找到它?

iphone passwords android blackberry windows-phone-7

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