反正有没有把 TextInputLayout 提示放在 editText 的正上方?而且我不希望 editText 位置被改变。将 TextInputLayout 重力设置为右侧不起作用,尽管它改变了 editText 位置。
嗨,我是 android 新手,在我的应用程序中,我使用的是 TextInputLayout 字段。
我设置了 EditText 边框颜色,但我不想设置编辑文本背景颜色,但根据我下面的代码,当我点击“注册”按钮时,编辑文本背景颜色显示为红色。
我们如何更改此背景颜色?
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid android:color="@android:color/white" />
<stroke
android:width="1dip"
android:color="@android:color/holo_purple" />
<padding android:left="5dp"
android:top="5dp"
android:right="5dp"
android:bottom="5dp"/>
</shape>
Run Code Online (Sandbox Code Playgroud)
<style name="TextAppearance.App.TextInputLayout" parent="@android:style/TextAppearance">
<item name="android:textColor">@color/splahbgcolor</item>
<item name="android:textSize">14sp</item>
</style>
Run Code Online (Sandbox Code Playgroud)
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_marginTop="?attr/actionBarSize"
android:orientation="vertical"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:paddingTop="60dp">
<android.support.design.widget.TextInputLayout
android:id="@+id/input_layout_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:hintTextAppearance="@style/TextAppearance.App.TextInputLayout">
<android.support.v7.widget.AppCompatEditText
android:id="@+id/input_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:background="@drawable/edittext_background"
android:ems="10"
android:inputType="textEmailAddress"
android:padding="8dp"
android:textColor="@color/splahbgcolor"
android:hint="@string/hint_name" />
</android.support.design.widget.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)
public class MainActivity extends AppCompatActivity {
private Toolbar toolbar;
private EditText inputName, inputEmail, inputPassword;
private TextInputLayout …Run Code Online (Sandbox Code Playgroud) 我必须在我的工作中使用 Android 设计支持库的 TextInputLayout。我想将 setError() 的文本放在 EditText 下,它位于 TextInputLayout 中。现在太远了,如下图所示。
我在 TextInputLayout 中设置了边距和填充,但两者都不起作用,所以我只设置了 android:layout_marginStart 和 android:layout_marginEnd 就回滚了我的代码。
感谢您的任何建议。
<android.support.design.widget.TextInputLayout
android:id="@+id/til_et_email"
android:layout_width="match_parent"
android:textColorHint="#B32F874E"
app:errorEnabled="true"
android:layout_height="wrap_content"
android:layout_below="@+id/til_et_ID"
android:layout_alignParentStart="true"
android:focusableInTouchMode="false"
android:layout_marginStart="20dp"
android:layout_marginEnd="20dp" >
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"
android:hint="Email Address"
android:ems="12"
android:textColor="#2F874E"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="50dp"
android:id="@+id/txtEmail"
android:layout_marginBottom="50dp" />
</android.support.design.widget.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)
user-interface android androiddesignsupport android-textinputlayout
我添加了一个drawableLeftin 并EditText包含在TextInputLayout. 提示的位置TextInputLayout根据文本位置(从左边即旁边drawableLeft)为:
谢谢你。
我有一个TextInputLayout。我尝试应用自定义hintTextAppearance样式
<?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:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/wizard_horizontal_margin"
android:paddingRight="@dimen/wizard_horizontal_margin"
android:paddingTop="@dimen/wizard_vertical_margin"
android:paddingBottom="@dimen/wizard_vertical_margin">
<TextView
android:paddingBottom="@dimen/wizard_vertical_margin"
android:text="What's your email address?"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="?attr/wizardTextViewColor"
android:textSize="18sp"
android:id="@+id/text_view" />
<android.support.design.widget.TextInputLayout
app:hintTextAppearance="@style/WizardTextInputLayout"
android:id="@+id/text_input_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"
android:hint="Email address"
android:id="@+id/email_edit_text" />
</android.support.design.widget.TextInputLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
我尝试通过应用以下自定义样式使文本变为粗体。
<style name="WizardTextInputLayout" parent="TextAppearance.Design.Hint">
<item name="android:textStyle">bold</item>
</style>
Run Code Online (Sandbox Code Playgroud)
但是,在应用自定义样式之前和之后看起来都没有什么不同。
hintTextAppearance样式之前hintTextAppearance样式后我可以确认样式工作。因为,如果我android:textSize在WizardTextInputLayout样式中添加属性,则可以看到浮动标签文本大小发生了变化。
但是,为什么使浮动标签文本变为粗体不起作用?我有什么可以尝试使浮动标签文本加粗的?
我在Firebase崩溃报告Password toggle button中遇到了一些关于某些真实设备中处于发布模式的应用的错误.问题是堆栈跟踪错误完全与android.support.design代码类似,您将在以下从firebase控制台获取的日志中看到:
异常java.lang.NullPointerException:尝试在空对象引用上调用虚方法'int java.util.ArrayList.size()'
android.graphics.drawable.AnimatedVectorDrawable.isStarted(AnimatedVectorDrawable.java:427)
android.graphics.drawable .AnimatedVectorDrawable.start(AnimatedVectorDrawable.java:440)
android.graphics.drawable.AnimatedStateListDrawable $ AnimatedVectorDrawableTransition.start(AnimatedStateListDrawable.java:339)
android.graphics.drawable.AnimatedStateListDrawable.selectTransition(AnimatedStateListDrawable.java:226)
android.graphics.drawable .AnimatedStateListDrawable.onStateChange(AnimatedStateListDrawable.java:145)
android.graphics.drawable.Drawable.setState(Drawable.java:599)
android.support.v4.graphics.drawable.DrawableWrapperGingerbread.setState(DrawableWrapperGingerbread.java:145)
android.support .v4.graphics.drawable.DrawableWrapperLollipop.setState(DrawableWrapperLollipop.java:95)
android.widget.ImageView.drawableStateChanged(ImageView.java:1115)
android.support.v7.widget.AppCompatImageButton.drawableStateChanged(AppCompatImageButton.java:149)
android.view.View.refreshDrawableState(View.java:16052)
android.support.design.widget.CheckableImageButton.setChecked(CheckableImageButton.java:75 )
android.support.design.widget.TextInputLayout.passwordVisibilityToggleRequested(TextInputLayout.java:1293)
android.support.design.widget.TextInputLayout $ 4.onClick(TextInputLayout.java:1074)
android.view.View.performClick(View.java:4785 )
android.view.View $ PerformClick.run(View.java:19888)
android.os.Handler.handleCallback(Handler.java:739)
android.os.Handler.dispatchMessage(Handler.java:95)
android.os.Looper .loop(Looper.java:135)
android.app.ActivityThread.main(ActivityThread.java:5276)
java.lang.reflect.Method.invoke(Method.java)java.lang.reflect.Method.invoke(Method.java) :372)
com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:911)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:706)
之前我一直在跟踪与此小部件相关的一些错误,我的意思是,我发布了与密码切换可见性相关的问题,我发现了一些关于此组件的问题:
我还发现了一些关于它的AOSP问题:
现在,当用户只需按下切换按钮时,我就会收到此错误
它发生在以下真实设备中:
关于TextInputLayout和TextInputEditText的XML及其主题:
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/TextLabel"
app:passwordToggleEnabled="true">
<android.support.design.widget.TextInputEditText
android:id="@+id/login_field_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/perfil_field_password"
android:inputType="textPassword"
android:maxLines="1"
android:maxLength="100"
android:imeOptions="actionDone"
android:textColor="@color/colorAccent"
android:textSize="18sp"
android:paddingStart="15dp"
android:paddingEnd="5dp"/> …Run Code Online (Sandbox Code Playgroud) android android-support-library android-support-design android-textinputlayout android-textinputedittext
我在 textInputLayout 中使用 textInputEditText 我必须为我的editText设置背景以实现我的editText的边框视图。但是当我在 textInputLayout 上调用 setError() 时,整个 editText 颜色变为红色。但我只想更改错误文本的颜色,而不是整个视图。
设置错误前:
设置错误后:
这是我的 xml 代码:
<android.support.design.widget.TextInputLayout
android:layout_alignParentTop="true"
android:id="@+id/ex_pass_holder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:passwordToggleEnabled="false"
android:gravity="right">
<android.support.design.widget.TextInputEditText
android:id="@+id/ex_pass_et"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:hint="??? ???? ????"
android:inputType="textPassword"
android:textColor="#000"
android:textSize="15sp"
android:gravity="right|center"
android:background="@drawable/edittext_bg"
android:padding="8dp"
/>
</android.support.design.widget.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)
请帮帮我,我做错了什么?
android android-layout android-edittext android-textinputlayout android-textinputedittext
我TextInputEditTexts在自定义中嵌套了以下内容,TextInputLayouts并且我希望同时显示“x”图标和密码切换。但是,眼睛切换覆盖了“x”图标。
我有一个自定义TextInputLayout名称LoginInputLayout,我试图在密码 editText 的右侧添加两个可绘制对象,但我一直只看到眼睛图标。
如何在右侧添加两个可绘制对象而不是一个覆盖另一个?如下图所示。
这是我想要达到的设计
在父级的 Android 实现中,LayoutInputTextView第一个子级实际上是 a FrameLayout,而该 FL 的子级是TextInputEditText.
当密码切换(导致眼睛出现)设置为显示时,看起来 android 实现会膨胀切换的视图,并将其设置在 FrameLayout 中,如下所示。
if (shouldShowPasswordIcon()) {
if (mPasswordToggleView == null) {
mPasswordToggleView = (CheckableImageButton) LayoutInflater.from(getContext())
.inflate(R.layout.design_text_input_password_icon, mInputFrame, false);
mPasswordToggleView.setImageDrawable(mPasswordToggleDrawable);
mPasswordToggleView.setContentDescription(mPasswordToggleContentDesc);
mInputFrame.addView(mPasswordToggleView);
mPasswordToggleView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
passwordVisibilityToggleRequested(false);
}
});
}
Run Code Online (Sandbox Code Playgroud)
唯一的问题是,mFrameLayout 成员变量是私有的,我无法在其中添加更多子项或控制它们的放置位置。这就是为什么我觉得我只能尝试复合可绘制方式。
<com.ge.cbyge.view.LoginInputTextLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
app:error="@{viewModel.emailError}">
<android.support.design.widget.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/login_fragment_email_text"
android:focusable="true"
android:focusableInTouchMode="true"
android:inputType="textEmailAddress"
android:maxLines="1"
android:text="@={viewModel.email}"/>
</com.ge.cbyge.view.LoginInputTextLayout>
<com.ge.cbyge.view.LoginInputTextLayout …Run Code Online (Sandbox Code Playgroud) 我正在尝试以编程方式更改更改 TextInputLayout 提示颜色。虽然设置
android:textColorHint="@color/redColor"
Run Code Online (Sandbox Code Playgroud)
在 xml 中工作得很好,我得到了这个:
并在编辑时
这就是我想要的,但我需要动态设置它
现在我 TextInputLayout 没有 setHintTextColor 方法但是 TextInputEditText 有所以我试着这样做:
editext.setHintTextColor(getColor(R.color.redColor))
Run Code Online (Sandbox Code Playgroud)
但这不适用于作为 TextInputLayout 子级的 editext,因此即使 TextInputLayout 确实支持“android:textColorHint”属性,它也不支持“setHintTextColor”方法我寻找不同的方法,我发现有人建议使用“ setHintTextAppearance" 与预定义的样式,这就是我所做的,但它给出了以下结果:
这是风格的样子
<style name="AppRedText" parent="@android:style/TextAppearance">
<item name="android:textColor">@color/redColor</item>
<item name="android:textColorHint">@color/redColor</item>
<item name="android:textSize">12sp</item>
</style>
Run Code Online (Sandbox Code Playgroud)
如何以编程方式实现“android:textColorHint”属性行为?
user-interface android android-layout android-textinputlayout
单击 TextInputLayout 后,应用在运行 5.1.1 的 Oppo F1S 中延迟 1 秒后崩溃。我无法访问设备拳头,我收到了 crashlytics 的崩溃报告,然后我让我的远程朋友在他们的 oppo 手机上尝试一下。
我无法找出原因,而且由于我无法访问该设备,我发现解决这个问题非常困难。
它在其他设备上运行良好,甚至在运行 8.1.0 的 oppoF7 中也能正常工作
这是我的 XML
<android.support.design.widget.TextInputLayout
android:id="@+id/til_email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="24dp"
android:layout_marginStart="24dp"
android:layout_marginTop="32dp"
android:theme="@style/TextLabel"
app:hintTextAppearance="@style/TextAppearance.App.TextInputLayout"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView53">
<android.support.v7.widget.AppCompatEditText
android:id="@+id/et_email"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00000000"
android:drawablePadding="10dp"
android:hint="Email"
android:inputType="textEmailAddress"
android:onTextChanged="@{(text, start, before, count) -> activity.onEmailChanged(text)}"
android:paddingTop="10dp"
app:backgroundTint="@color/black" />
</android.support.design.widget.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)
这是styles.xml
<!--Input field style-->
<style name="MyEditText" parent="Theme.AppCompat.Light">
<item name="colorControlNormal">@color/black</item>
<item name="colorControlActivated">@color/black</item>
<item name="android:textColorHint">@color/greish</item>
<item name="android:textSize">14sp</item>
<item name="colorAccent">@color/black</item>
</style>
<style name="ErrorText" parent="TextAppearance.AppCompat">
<item name="android:textStyle">bold|italic</item>
<item name="android:textColor">@color/colorPrimary</item>
</style>
<style …Run Code Online (Sandbox Code Playgroud) android android-layout android-textinputlayout textinputlayout