gpt4 book ai didi

android - TextInputLayout 移动提示标签并在聚焦时更改其背景颜色

转载 作者:行者123 更新时间:2023-11-29 02:18:03 28 4
gpt4 key购买 nike

我正在尝试自定义 Material TextInpuLayout.OutlinedBoxTextInputEditText

我现在的状态如下图

enter image description here

我想要做的是删除提示标签的背景,这样它就不会创建那个丑陋的切口。像这样:

enter image description here

或者,如果这不可能,将标签移动到输入上方也可以解决问题:

enter image description here

如果这可以使用样式来实现,那么我也可以轻松地将其应用于其他文本输入元素,那就太好了。我是 android 的新手,所以请体谅。

这是样式代码:

<style name="MyTheme" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
<item name="android:textSize">14sp</item>
<item name="boxCornerRadiusTopStart">@dimen/textInputCornerRadius</item>
<item name="boxCornerRadiusTopEnd">@dimen/textInputCornerRadius</item>
<item name="boxCornerRadiusBottomStart">@dimen/textInputCornerRadius</item>
<item name="boxCornerRadiusBottomEnd">@dimen/textInputCornerRadius</item>
<item name="boxBackgroundColor">@color/primaryDarkColorBackground</item>
<item name="boxStrokeColor">@color/text_input_box_stroke</item>
</style>
<style name="EditTextStyle" parent="Widget.AppCompat.EditText">
<item name="android:background">@null</item>
<item name="android:paddingStart">30dp</item>
</style>

下面是我在布局中定义输入的方式:

<com.google.android.material.textfield.TextInputLayout
android:id="@+id/username_layout"
style="@style/MyTheme"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="48dp"
android:layout_marginEnd="48dp"
android:hint="@string/email_or_username"
app:boxBackgroundMode="outline"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.10">

<com.google.android.material.textfield.TextInputEditText
android:id="@+id/username"
style="@style/EditTextStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</com.google.android.material.textfield.TextInputLayout>

最佳答案

我认为您无法使用 TextInputLayout.OutlinedBox 样式获得它。
这不是您要找的:

   <com.google.android.material.textfield.TextInputLayout
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.Rounded"
..>

<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="30dp"
/>

</com.google.android.material.textfield.TextInputLayout>

与:

  <style name="Widget.MaterialComponents.TextInputLayout.FilledBox.Rounded" parent="Widget.MaterialComponents.TextInputLayout.FilledBox">
<item name="shapeAppearanceOverlay">@style/Rounded_ShapeAppearanceOverlay.MaterialComponents.TextInputLayout</item>
<item name="boxStrokeColor">@color/input_text_no_underline</item>
</style>

<style name="Rounded_ShapeAppearanceOverlay.MaterialComponents.TextInputLayout" parent="">
<item name="cornerFamily">rounded</item>
<item name="cornerSize">50%</item>
</style>

选择器用于去除下划线:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:alpha="0" android:color="?attr/colorOnSurface" android:state_hovered="true"/>
<item android:alpha="0" android:color="?attr/colorOnSurface" android:state_enabled="false"/>
<item android:alpha="0" android:color="?attr/colorOnSurface"/>
</selector>

enter image description here enter image description here

注意:需要1.1.0版本的库。

关于android - TextInputLayout 移动提示标签并在聚焦时更改其背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59019656/

28 4 0