我在用着TextInputLayout。我设置了它的提示来string.xml应用本地化。因此,从下拉列表中更改语言后,我使用recreate()使用所选语言资源刷新整个活动组件的方法,但TextInputLayout提示没有刷新。
我有一个带有EditText的TextInputLayout.
这是我的xml:
<android.support.design.widget.TextInputLayout
android:id="@+id/textInputLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="Enter Text" />
</android.support.design.widget.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)
我的java代码:
((TextInputLayout) findViewById(R.id.textInputLayout)).setError("ERROR");
Run Code Online (Sandbox Code Playgroud)
当我调用setError("ERROR")时,标签(提示)颜色和EditText的底线颜色变为红色并出现错误.这是我期望的行为.
现在让我们说在销毁我的活动之前我不会调用setError(null).现在我再次打开相同的活动.我可以看到我的应用程序里面的所有EditText字段的底线都是红色的,虽然标签颜色似乎被重置并且错误消息被取消.这并不总是可重复的,但如果我继续尝试,我最终可以得到它.
我正在使用带有5.1.1的Nexus 4.
难道我做错了什么?
我有那种布局:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
android:id="@+id/coordinatorLayout"
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:background="@color/appbar_background">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="360dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:elevation="1dp">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minHeight="?attr/actionBarSize"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:titleEnabled="false">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_collapseMode="parallax"
app:layout_collapseParallaxMultiplier="0.7">
<android.support.v4.view.ViewPager
android:id="@+id/post_pager"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</RelativeLayout>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
/>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:background="@color/common_green"
android:src="@drawable/add_picture"
app:backgroundTint="@color/common_green"
app:elevation="2dp"
app:fabSize="normal"
app:layout_anchor="@id/appbar"
app:layout_anchorGravity="bottom|left|start"
app:rippleColor="@color/common_grey"/>
<android.support.v4.widget.NestedScrollView
android:id="@+id/nested_scroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="fill_vertical"
android:fitsSystemWindows="true"
android:padding="16dp"
app:elevation="5dp"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.design.widget.TextInputLayout
android:id="@+id/slide_content_til"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:background="@color/appbar_background"
android:hint="@string/write_something"
android:orientation="vertical"
android:textColorHint="@color/white"
app:errorEnabled="false" …Run Code Online (Sandbox Code Playgroud) 我试图设置自定义字体上Hint的TextInputLayout.因此我使用自TextInputLayout定义属性的自定义子类MyHint.此属性设置器应格式化文本并设置FormattedText但不起作用.
如果我只是设置FormattedHint属性它也不格式化.有谁为什么这些方法失败了?
下面你可以看到我的自定义类属性.
例:
BaseTextInputLayout userNameInput = view.FindViewById<BaseTextInputLayout>(Resource.Id.myId);
userNameInput.MyHint = "My Custom hint text";
Run Code Online (Sandbox Code Playgroud)
类:
public class BaseTextInputLayout: TextInputLayout
{
public string MyHint
{
get
{
return Hint;
}
set {
if (value != null)
{
SpannableStringBuilder builder = new SpannableStringBuilder(value);
builder.SetSpan(new CustomTypeFaceSpan("", Constants_Android.TYPEFACE_YOGA_MET_EVY_CUSTOMFONT), 0, builder.Length(), SpanTypes.InclusiveExclusive);
this.HintFormatted = builder;
}
else
{
this.HintFormatted = null;
}
}
}
Run Code Online (Sandbox Code Playgroud) 我面临一个奇怪的问题,我有一个InputTextLayout和一个EditText,并且我正在尝试实现类似的功能(如下图所示)(来自材料设计指南的图像:https : //material.io/guidelines/components /text-fields.html#text-fields-layout),其中有两个单独的提示。我这样做是通过将android:hint添加到两个布局中。这可以正常工作,但是当焦点移开该位置时,“标签”将向下移动并与“占位符”文本重叠。(仅当用户未提供任何输入且编辑文本为空时,两个提示才重叠)。关于如何解决此问题的任何指示?
作为一项要求,我需要两个提示都存在,并且“标签”不应向下移至焦点更改。两种提示都应保持在原位
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Label">
<android.support.v7.widget.AppCompatEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Placeholder"
android:inputType="textCapWords"
/>
</android.support.design.widget.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)
android android-layout android-edittext android-textinputlayout 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
第一张图就是我想要的。第二张图是我实现的。如您所见,TextInputLayout 底部有一个填充,这使得灰色背景溢出编辑文本行。
请不要建议负边距或填充,因为它在较新的 API 中不起作用。
这是我用于第一个文本输入布局的 XML。
<android.support.design.widget.TextInputLayout
android:id="@+id/fullNameTextLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="32dp"
android:paddingTop="10dp"
android:background="#EAEAEA"
android:hint="Full Name"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<EditText
android:id="@+id/fullNameEditText"
style="@style/Regular15Grey1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textCapWords"
android:paddingLeft="12dp"
android:paddingRight="12dp"
android:singleLine="true"/>
</android.support.design.widget.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)
无论我做什么,我都无法EditText在内部制作多行TextInputLayout(必须InputLayout为字符计数器添加)。所以当我输入一些东西时,它会水平移动,而不是在一段时间后转到新的一行。如您所知,在 normal EditTexts 中, multiline 可以解决问题,但在这种情况下则不然。你怎么认为?谢谢你。
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<android.support.v7.widget.CardView
android:id="@+id/cardView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_marginTop="40dp"
android:layout_weight="1"
app:layout_constraintBottom_toTopOf="@+id/adViewNewEntry"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.134">
<android.support.design.widget.TextInputLayout
android:id="@+id/textContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="2dp"
android:padding="28dp"
app:counterEnabled="true"
app:counterMaxLength="280"
app:layout_constraintBottom_toTopOf="@+id/save_button"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0">
<android.support.design.widget.TextInputEditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:background="@android:color/transparent"
android:gravity="top|left"
android:inputType="textNoSuggestions|textMultiLine"
android:maxLines="10"
android:scrollbars="vertical"
/>
</android.support.design.widget.TextInputLayout>
</android.support.v7.widget.CardView>
<Button
android:id="@+id/save_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginEnd="15dp"
android:layout_marginStart="256dp"
android:layout_marginTop="8dp"
android:layout_weight="1"
android:onClick="saveToDatabase"
android:text="SAVE"
app:layout_constraintBottom_toTopOf="@+id/adViewNewEntry"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.75"
app:layout_constraintStart_toStartOf="parent" …Run Code Online (Sandbox Code Playgroud) 不知道我错过了什么,但每次edittext聚焦时,下划线颜色都不会适应我设置的自定义颜色。这是我的主题代码供参考
<style name="EditTextHintWhite" parent="@style/AppTheme">
<item name="color">@color/white</item>
<item name="android:textColorHint">@color/white</item>
<item name="colorControlNormal">@color/white</item>
<item name="colorControlActivated">@color/white</item>
<item name="colorError">@color/white</item>
</style>
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我已将它们全部设置为白色,但不知何故,当焦点edittext聚焦时,下划线变成绿色
这是我的布局代码
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/EditTextHintWhite">
<androidx.appcompat.widget.AppCompatEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/email"
android:inputType="textEmailAddress"
android:maxLines="1"
android:shadowColor="@color/white"
android:singleLine="true"
android:textColor="@color/white"
app:backgroundTint="@color/white" />
</com.google.android.material.textfield.TextInputLayout>
Run Code Online (Sandbox Code Playgroud) android android-textinputlayout textinputlayout material-components material-components-android
假设我想要更改文字大小.我在代码中这样做,它看起来像这样:
_textInputLayout.EditText.SetTextSize(Android.Util.ComplexUnitType.Dip, 40);
Run Code Online (Sandbox Code Playgroud)
当我在条目中写入文本时,它看起来像40dip文本.但是当条目为空时,提示文本看起来像16-18dip.
有没有办法改变提示文字大小?
android xamarin xamarin.forms android-textinputlayout textinputlayout
android ×10
textinputlayout ×10
kotlin ×2
xamarin ×2
java ×1
material-components-android ×1
multiline ×1
recreate ×1