我正在尝试设置 TextInputLayout 未聚焦的边框描边颜色。同样,有太多的问题和答案,我已经尝试了所有的问题。就像创建样式并用作主题一样,创建颜色选择器并应用它,也可以直接应用 app:boxStrokeColor 和颜色选择器。但这些可用的解决方案中的任何一个都不太幸运。
不确定,我哪里做错了或者我仍然缺少什么。我将我的代码推送到github 的测试项目,以便更好地了解我的整个设置。以下是一些用于快速查看的示例代码:
Activity_main.xml(ConstraintLayout 内的 TextInputLayout)
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<!-- Tried this as well - app:boxStrokeColor="@color/text_input_box_stroke_color" -->
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/emailTextInputLayout"
android:hint="Email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:theme="@style/TextInputLayoutStyle"
android:layout_marginHorizontal="24dp"
app:layout_constraintTop_toBottomOf="@id/toolbar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/emailTextInput"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:importantForAutofill="no"
android:inputType="textEmailAddress" />
</com.google.android.material.textfield.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="TextInputLayoutStyle" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense">
<item name="boxStrokeColor">#FF00CC</item>
<item name="boxStrokeWidth">2dp</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
text_input_box_lines_color.xml(颜色选择器)
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/mtrl_textinput_focused_box_stroke_color" android:state_focused="true"/>
<item android:color="@color/mtrl_textinput_hovered_box_stroke_color" android:state_hovered="true"/>
<item android:color="@color/mtrl_textinput_disabled_color" android:state_enabled="false"/>
<item android:color="@color/mtrl_textinput_default_box_stroke_color"/> …Run Code Online (Sandbox Code Playgroud) android android-textinputlayout android-textinputedittext material-components-android
所以我有以下布局 TextInputEditText:
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/note"
android:layout_marginTop="@dimen/layout_margin_default"
app:startIconDrawable="@drawable/baseline_notes_24">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textMultiLine"
/>
</com.google.android.material.textfield.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)
现在,当我选择在键盘内书写时,TextInputEditText键盘会自动显示在以下位置TextInputEditText:

现在,我想要的是,而不是在 下方显示键盘TextInputEditText,我希望显示在当前“选定”行下方的键盘,该行应如下所示:

示例视频应该是什么样子: https://jumpshare.com/v/TAO6jo1jdnRZDhYyzrkY
如何以正确的方式解决这个问题?我尝试过使用android:windowsoftinputmode,但找不到合适的属性。
我假设在显示键盘方面没有太多余地?
keyboard android android-softkeyboard android-edittext android-textinputlayout
我正在使用TextInputLayoutAndroid设计库中的新功能,
当EditText集中,一切都还好,我可以看到上面的提示EditText:

但是当EditText失去焦点时,提示完全消失了:

我希望提示会返回到EditText,我还缺少什么?
下面的xml代码。
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="20dp">
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Try me!"/>
</android.support.design.widget.TextInputLayout>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:hint="Try me 2"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud) 我已经将TextInputLayout用于EditText,并且在它下面有一个TextView.我看到TextInputLayout和TextView之间有一个额外的空间.我想删除那个额外的空间.使用和不使用TextInputLayout附加的图片.我已经在开发者选项中启用了边界,因此pic可能看起来令人困惑但信息丰富.
以下是布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.design.widget.TextInputLayout
android:id="@+id/layoutCurrentPW"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
app:errorEnabled="true">
<EditText
android:id="@+id/editTextCurrentPassword"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_marginLeft="50dp"
android:layout_marginRight="50dp"
android:layout_marginTop="30dp"
android:background="@drawable/edit_text_border_drawable"
android:gravity="center"
android:hint="@string/current_password"
android:layout_gravity="bottom"
android:inputType="textPassword"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@color/black" />
</android.support.design.widget.TextInputLayout>
<TextView
android:id="@+id/textForgotPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:clickable="true"
android:text="@string/forgot_password"
android:textSize="17sp" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
假设我想要更改文字大小.我在代码中这样做,它看起来像这样:
_textInputLayout.EditText.SetTextSize(Android.Util.ComplexUnitType.Dip, 40);
Run Code Online (Sandbox Code Playgroud)
当我在条目中写入文本时,它看起来像40dip文本.但是当条目为空时,提示文本看起来像16-18dip.
有没有办法改变提示文字大小?
android xamarin xamarin.forms android-textinputlayout textinputlayout
我已将自定义背景设置为Xml文件中的EditText.验证后,我在运行时为EditText设置了不同的背景,并将错误设置为TextInputLayout.但是在Android M中,它不是设置后台资源,而是将背景颜色设置为EditText.
以下是我的代码: -
XML文件代码
<android.support.design.widget.TextInputLayout
android:id="@+id/input_layout_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
app:errorTextAppearance="@style/ErrorText">
<EditText
android:id="@+id/input_name"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:background="@drawable/edittext_selector"
android:hint="@string/hint_name"
android:imeOptions="actionNext"
android:inputType="textEmailAddress" />
</android.support.design.widget.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)
验证码
if (inputName.getText().toString().trim().isEmpty()) {
inputLayoutName.setErrorEnabled(true);
inputLayoutName.setError("Errorrroror");
inputName.setBackgroundResource(R.drawable.edittext_red_focused);
requestFocus(inputName);
return false;
} else {
inputName.setBackgroundResource(R.drawable.edittext_selector);
inputLayoutName.setErrorEnabled(false);
}
return true;
Run Code Online (Sandbox Code Playgroud)
以下是我的错误资源文件
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<solid android:color="@color/sale_color" />
</shape>
</item>
<!-- main color -->
<item
android:bottom="1.0dp"
android:left="1.0dp"
android:right="1.0dp">
<shape>
<solid android:color="@android:color/white" />
</shape>
</item>
<!-- draw another block to cut-off the left and right bars --> …Run Code Online (Sandbox Code Playgroud) 我想android.support.design.widget.TextInputLayout在我的Android应用程序中集成.我已经将jar文件android-support-design.jar从sdk 复制到了我的应用程序lib文件夹.我在我的xml文件中为Email EditText添加了以下代码,
<!-- Email Label -->
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp">
<EditText android:id="@+id/input_email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"
android:hint="Email" />
</android.support.design.widget.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)
在我的layout.xml文件中添加此代码时,我收到一个错误,如,
Exception raised during rendering: com.android.layoutlib.bridge.MockView cannot be cast to android.view.ViewGroup
Exception details are logged in Window > Show View > Error Log
The following classes could not be instantiated:
- android.support.design.widget.TextInputLayout (Open Class, Show Error Log)
See the Error Log (Window > Show View) for more details.
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题......
是否可以为EditText更改TextInputLayout错误文本字体?
我只能通过app:errorTextAppearance更改颜色或文本大小。
我有一个简单的TextInputEditText嵌套TextTnputLayout.
我试图让它与提供TIL的暗示一样长TIET.
<android.support.design.widget.TextInputLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<android.support.design.widget.TextInputEditText
android:layout_width="match_parent"
android:layout_height="match_parent"
android:hint="This is a hint"/>
</android.support.design.widget.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)
我必须将TIL宽度设置为match_parent或除了之外的任何其他宽度wrap_content.但是我希望宽度是动态的,宽度TIL跟随提示的长度.可能吗?如果是的话,怎么做?
我正在使用支持库版本26.0.2顺便说一句.
Yvette Colomb的答案很接近,TIL包装TIET但花哨的动画在那里不起作用.可能是因为如果在执行中设置了提示,动画将无法启动?