小编net*_*men的帖子

如何在 Compose 中设置多行文本换行宽度?

我想像这样画一个边框Text

Text("Box around text",
    modifier = Modifier
        .padding(top = 8.dp)
        .border(width = 2.dp, color = Color.Red)
        .background(Color.DarkGray))
Text("Box around text with a very very very very longlonglonglongword",
    modifier = Modifier
        .padding(top = 8.dp)
        .border(width = 2.dp, color = Color.Red)
        .background(Color.DarkGray)
)  
Run Code Online (Sandbox Code Playgroud)

但在多行文本的情况下,它看起来不太好。
右侧边框和文本之间有一个间隙。

文本周围的框

那么如何在多行文本周围绘制边框,使其适合文本宽度呢?

android kotlin android-jetpack-compose

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

HTML:我可以将下标文本放在上标下吗?

我有一个单词,它有上标和下标.现在我像这样渲染word<sub>1</sub><sup>2</sup> 并得到以下内容:

word12.

如何将下标正好放在上标下?

html

8
推荐指数
1
解决办法
3829
查看次数

如何将自定义视图组添加到Anko DSL?

Anko文档告诉我们如何向DSL添加自定义视图.但如果我的自定义视图是一个视图组,则会出现问题.

class MyFrameLayout(context: Context) : FrameLayout(context)

fun ViewManager.myFrameLayout(init: MyFrameLayout.() -> Unit = {}) = ankoView({ MyFrameLayout(it) }, init)

class MyUI : AnkoComponent<Fragment> {
    override fun createView(ui: AnkoContext<Fragment>) = with(ui) {

        myFrameLayout {
            textView("hello").lparams { // error: Unresolved reference: lparams
                bottomMargin = dip(40)
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但如果我将myFrameLayout调用更改为frameLayout它就可以了.那么,什么是使视图组与Anko DSL一起使用的正确方法?

kotlin anko

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

类型不匹配:推断类型是T但kotlin.Any是预期的

我有以下代码:

val map = HashMap<Int, Any>()
fun <T> test(t: T) = map.put(0, t) // Type mismatch: inferred type is T but kotlin.Any was expected
Run Code Online (Sandbox Code Playgroud)

但是每个Kotlin类都有Any作为超类,为什么会出现这个错误呢?

kotlin

8
推荐指数
1
解决办法
4228
查看次数

无法在不同模块中创建具有相同名称的私有类

关于Kotlin中可见性修饰符的官方文档说,标记的包级元素private仅在声明它们的模块中可见.

A声明的类在中Module1.kt是不可见的Module2.kt.但是,如果我尝试添加到Module2.kt它自己的类,A我会得到Redeclaration: A错误.

因为我不能访问Module2.ktModule1A类,为什么不是名字A随意使用?

kotlin name-collision

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

如何测试该observable在RxJava中使用正确的调度程序?

我有以下课程(简化):

public class Usecase<T> {
    private final Observable<T> get;
    private final Scheduler observeScheduler;

    public Usecase(Observable<T> get, Scheduler observeScheduler) {
        this.get = get;
        this.observeScheduler = observeScheduler;
    }

    public Observable<T> execute() {
        return get.subscribeOn(Schedulers.io()).observeOn(observeScheduler);
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在为它编写单元测试.如何测试subscribeOnobserveOn使用正确的值调用?

我尝试以下方法:

    Observable<String> observable = mock(Observable.class);
    Usecase<String> usecase = new Usecase(observable, Schedulers.computation());
    usecase.execute();

    verify(observable).subscribeOn(Schedulers.computation()); // should fail here, but passes
    verify(observable).observeOn(Schedulers.computation());   // should pass, but fails: Missing method call for verify(mock) here
Run Code Online (Sandbox Code Playgroud)

以上失败(我认为)因为subscribeOn而且observeOnfinal方法.那么可能还有其他方法可以确保observable使用正确的调度程序?

unit-testing mockito rx-java

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

如何衡量可组合性?

我有一个可组合按钮,可以根据状态显示文本或加载程序

enum class State { NORMAL, LOADING }

@Composable
fun MyButton(onClick: () -> Unit, text: String, state: State) {
    Button(onClick, Modifier.height(60.dp)) {
        if (state == State.NORMAL) {
            Text(text, fontSize = 32.sp)
        } else {
            CircularProgressIndicator(color = Color.Yellow)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我这样使用它:

MyButton(
        onClick = {
            state = if (state == State.NORMAL) State.LOADING else State.NORMAL
        },
        "hello",
        state
)
Run Code Online (Sandbox Code Playgroud)

但进入状态时按钮会缩小loading。我如何在状态中测量它,以便稍后normal在状态中分配这个测量的宽度?loading

android android-button android-jetpack-compose

7
推荐指数
2
解决办法
4517
查看次数

CSS:正确的方法是为具有大下划线的字体设置粗<a:hover>下划线

我是CSS初学者.基本上我有以下html:

<ul>
<li><a href="news.html">? ???</a></li>
<li><a href="#">???????</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我希望在悬停我的a标签时有一个粗的下划线,但我使用带有大下划线的自定义字体,所以如果我使用常见技巧:

a:hover {
text-decoration: none;
border-bottom: 2px solid;
padding: 0;
margin: 0;
}
Run Code Online (Sandbox Code Playgroud)

下划线远低于基线:在此输入图像描述 但我希望它看起来像这样: 在此输入图像描述

我试着这样做:

<ul>
    <li class="over"><a href="news.html">? ???</a></li>
    <li class="over"><a href="#">???????</a></li>
</ul>

.over{
    font-size: 30px;
    height:30px; // makes the text overlap this element
    overflow:visible;
}
.over:hover  {
    border-bottom: 2px solid #ec6713;
}
Run Code Online (Sandbox Code Playgroud)

但是现在所有字符串的下划线宽度都是相同的: 在此输入图像描述

然后我说display: inline-block;.over.但我得到了这个:在此输入图像描述

然后,我改变inline-blocktable,但再次下划线远远低于:

我最后添加了一个额外的span,所以现在我有:

<ul>
    <li><span class="over"><a href="news.html">? ???</a></span></li>
    <li><span class="over"><a href="#">???????</a></span></li>
</ul>

.over{ …
Run Code Online (Sandbox Code Playgroud)

html css fonts underline

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

少:在以前使用font-awesome:之前

我想要一个带有自定义字体,颜色和左侧子弹的标题的CSS选择器.所以我希望我的标题使用我的自定义字体,并且:before使用font-awesome 是伪元素.所以我希望我:before有这个.fa类,而整个元素没有这个类.

我有这个HTML:<h1 class="bulleted-header">Hello</h1>我想在LESS写这样的东西:

.bulleted-header {
    color: #61cbe6;
    font: 16px 'ds_goose', sans-serif;
    &:before {
        content: @fa-var-bullseye; // font-awesome's bullet icon
        .fa; // calling font-awesome's class. DOESN'T COMPILE
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是.fa类在font-awesome LESS源中声明如下:.@{fa-css-prefix} { ... }所以上面的代码不能编译.我试图重用这样的.fa代码:

&:before {
    content: @fa-var-bullseye; // font-awesome's bullet icon
    .@{fa-css-prefix}; // DOESN'T COMPILE
}
Run Code Online (Sandbox Code Playgroud)

和这样:

&:before:extend(.@{fa-css-prefix}) { // compiles but no effect
    content: @fa-var-bullseye; // font-awesome's bullet icon
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以像这样改变我的html <h1 class="bulleted-header"><span class …

html css less pseudo-element font-awesome

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

默认的EditText填充值是多少?

我有这样的EditText定义:

    <EditText
        android:id="@+id/input_password"
        android:hint="@string/password"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="textPassword" />
Run Code Online (Sandbox Code Playgroud)

它有一些默认的填充,看起来像"Show layout bounds"选项: 在此输入图像描述(或者它真的是边缘,我不确定.我指的是红色内盒和蓝色角落之间的空间).但这些填充/边距的价值是多少?在platforms/android-19/data/res/values/themes.xml我发现的Widget.EditText样式定义如下:

<style name="Widget.EditText">
    <item name="android:focusable">true</item>
    <item name="android:focusableInTouchMode">true</item>
    <item name="android:clickable">true</item>
    <item name="android:background">?android:attr/editTextBackground</item>
    <item name="android:textAppearance">?android:attr/textAppearanceMediumInverse</item>
    <item name="android:textColor">?android:attr/editTextColor</item>
    <item name="android:gravity">center_vertical</item>
</style>
Run Code Online (Sandbox Code Playgroud)

但是没有提到任何边距/填充.那他们在哪里定义?

layout android margins padding android-edittext

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