【问题标题】:Create text field where label is inside text field's borders创建标签位于文本字段边界内的文本字段
【发布时间】:2020-08-25 08:08:04
【问题描述】:

我想创建一个标签位于边框内的文本字段,如下所示:

如何使用材料组件做到这一点?

我不想在边框之间有这样的标签:(当您有多个填充字段时看起来不再好看,在我看来,所有中断的边框都会让人紧张)

【问题讨论】:

  • 我认为只有两种“官方”样式:Widget.MaterialComponents.TextInputLayout.OutlinedBox 和 Widget.MaterialComponents.TextInputLayout.FilledBox。你可能想看看第二个,它没有大纲。 material.io/components/text-fields
  • 您说得对,官方样式只有两种,但也许可以创建一些自定义样式。例如带有白色背景的 Widget.MaterialComponents.TextInputLayout.FilledBox 会很接近,只是缺少边框。也许有人知道是否/如何添加。
  • @stefan.at.wpf 您是否尝试过创建一个看起来像所需矩形的可绘制背景并将其简单地应用到 xml 中的 Widget.MaterialComponents.TextInputLayout.FilledBox 元素。

标签: android material-components-android


【解决方案1】:

您可以做的一个简单的事情是将提示移动到 TextInputEditText 并在 TextInputLayout 上禁用它。
然后它的行为就像旧的 EditTexts:该行不会被打断,因为当用户开始输入时提示会消失。如果您需要永久显示文本(或者可能将 TextView 放在顶部),您可以使用 app:helperText
还有其他方法可以获得完美的结果,但它们似乎“hacky”。喜欢thisthis

<com.google.android.material.textfield.TextInputLayout
    style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
    app:hintEnabled="false"
    app:helperText="helperText"
    ... >

        <com.google.android.material.textfield.TextInputEditText
            android:hint="hint"
            ... />
</com.google.android.material.textfield.TextInputLayout>

【讨论】:

  • 投反对票的人能否评论一下原因。
猜你喜欢
  • 2021-06-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-31
  • 2014-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-03
相关资源
最近更新 更多