小编Jos*_*sen的帖子

自动调整 Android TextView 大小时如何“wrap_content”?

考虑这个布局:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:id="@+id/textView"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:autoSizeTextType="uniform"
        android:gravity="center"
        android:maxLines="1"
        android:text="TextView"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHeight_max="50dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"/>
</android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

由于height_max限制,这会导致 TextView,其中文本填充垂直空间,但 TextView 内部有很多水平填充:

自动调整文本视图

我想要的是设置该 TextView 的宽度,使其与自动调整大小的文本内容的宽度相匹配。但是当我android:layout_width="wrap_content"根据非自动调整大小的文本内容设置宽度时:

非自动调整的 TextView

有什么方法可以两全其美——让文本根据已知高度自动调整大小,然后根据自动调整大小文本的宽度设置宽度?

android autosize android-layout android-constraintlayout

8
推荐指数
2
解决办法
6223
查看次数

如何在Web Worker中使用WebAssembly(wasm)代码?

目前,Web Worker被实例化:

let worker = new Worker('worker.js');
Run Code Online (Sandbox Code Playgroud)

然后浏览器提取worker.js并开始响应消息.

我想使用WebAssembly实现我的worker的功能.理想情况下,我想做这样的事情:

let worker = new Worker('worker.wasm');
Run Code Online (Sandbox Code Playgroud)

但我很确定这是不可能的.最明显的替代方法是worker.js获取worker.wasm并编译并运行它.但这意味着我们获取一个脚本(worker.js),其唯一的工作是获取并运行另一个脚本(worker.wasm).这对我来说很难受.所以我的问题是:在Web Worker中使用WebAssembly是否有更简洁的方法,这不会引入额外的提取步骤?

javascript web-worker webassembly

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

为什么Node在分配Int8Array时有时会挂起?

考虑以下两个程序:

// works.js
var buffer = new ArrayBuffer(16777216);
var HEAP8 = new Int8Array(buffer);
Run Code Online (Sandbox Code Playgroud)

// fails.js
var HEAP8;
var buffer = new ArrayBuffer(16777216);
HEAP8 = new Int8Array(buffer);
Run Code Online (Sandbox Code Playgroud)

node然后运行输入.load works.js.一切似乎都很开心.现在退出node.

node再次运行并输入.load fails.js.

在我的机器加载fails.js交互式引导node过程消耗超过1GB的RAM和100%的CPU,最后的语句永远阻止解释器.works.js只是运行并按预期返回.

是否有一些很好的理由来区别?或者我应该写一个错误报告?

奇怪的是,直接从命令行运行任一脚本都可以正常工作:

node works.js    # exits normally
node fails.js    # exits normally
Run Code Online (Sandbox Code Playgroud)

更新:我在OS X 10.9.5上使用节点0.12.0

javascript node.js typed-arrays

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

如何将Java无符号整数转换为Java中的协议缓冲区uint32s?

我正在努力将一堆旧的以制表符分隔的MySQL数据库转储文件转换为协议缓冲区,并且遇到了麻烦.MySQL表包括类型的字段int(11) unsigned,这是我已映射到的Protobuf uint32.proto的文件.在解析MySQL记录并尝试将它们转换为protobuf消息时,很有可能使用Integer.valueOf(String)(或Long.valueOf(String)避免溢出)来解析该字段.然而,Protocol Buffers的语言指南表明这里在Java中,uint32S使用的是代表的int数据类型,但与第一位被重新诠释为最高位,而不是作为符号位.

所以在我编写自己的String- > uint32-flavored- int解析器之前,我认为值得一问的是其他人是否已经解决了这个特殊问题.将Java String表示转换为Java中int unsigned的协议缓冲区的正确方法是什么uint32

java mysql primitive protocol-buffers

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

多线程可以使用Rust闭包吗?

我希望能够让多个线程评估相同的闭包.我想到的应用程序是并行化数值集成,因此可以将函数域轻松拆分为N个块并交给线程.

这是一个简单的函数,它多次计算提供的闭包并平均结果:

use std::sync::mpsc;
use std::thread;

const THREAD_COUNT: u64 = 4;

fn average<F: Fn(f64) -> f64>(f: F) -> f64 {
    let (tx, rx) = mpsc::channel();
    for id in 0..THREAD_COUNT {
        let thread_tx = tx.clone();
        thread::spawn(move || {
            thread_tx.send(f(id as f64));
        });
    }

    let mut total = 0.0;
    for id in 0..THREAD_COUNT {
        total += rx.recv().unwrap();
    }
    total / THREAD_COUNT as f64
}

fn main() {
    average(|x: f64| -> f64 { x });
}
Run Code Online (Sandbox Code Playgroud)

当我编译时,我收到此错误:

error[E0277]: `F` cannot be sent between …
Run Code Online (Sandbox Code Playgroud)

concurrency multithreading closures rust

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

如何在Android Studio的布局编辑器中使用自定义分辨率?

有时我正在编辑列表项或类似的小型 UI 组件的布局资源。这很好,但是 Android Studio 布局编辑器中的可用屏幕分辨率太大,无法合理地了解列表项或其他内容的外观。即使使用可用的最小分辨率(2.7" QVGQ),也总会有大量未使用的空间:

在此输入图像描述

如果我尝试添加元素match_parent,或者match_constraint它们会爆炸并占据编辑器的整个空间:

在此输入图像描述

如何在 Android Studio 的布局编辑器中使用自定义屏幕分辨率?它可以让我更好地了解这些较小的 UI 组件布局的实际外观。我的谷歌搜索都是徒劳的。在 Android Studio 中,我能够添加分辨率非常小的新设备定义,但它不会显示在布局编辑器的可用分辨率列表中。帮助!

更新

我按照下面 Chisko 的建议检查了“通用手机和平板电脑”菜单,但我的虚拟设备不在那里。

在此输入图像描述

在此输入图像描述

但是重启Android studio后,出现:

在此输入图像描述

所以 Chisko 是对的,但 Android Studio 中似乎还存在一个错误,即在重新启动之前,虚拟设备的创建不会反映在“通用手机和平板电脑”菜单中。

android screen-resolution android-layout android-studio android-layout-editor

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