我有一个TextInputEditText结合TextInputLayout与android:inputType="textPassword"运用app:passwordToggleEnabled="true",以显示在密码切换按钮TextInputEditText像下一张图片:
问题是,一旦我按下密码切换按钮,它就永远消失了.
它在com.android.support:design:24.2.0版本中运行良好.
我错过了一些新的东西吗?这是一个错误吗?
有些项目的gradle的设置:
的minSdkVersion 17
targetSdkVersion 25
编译'com.android.support:support-v4:25.1.0'
编译'com.android.support:appcompat-v7:25.1.0'
编译"com.android.support:cardview -V7:25.1.0'
编译'com.android.support:design:25.1.0'
在2个不同的Android 6.0(棉花糖)装置运行.
XML:
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/TextLabelGray"
app:passwordToggleEnabled="true">
<android.support.design.widget.TextInputEditText
android:id="@+id/profile_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="actionNext"
android:imeActionLabel="@string/perfil_field_tipo_documento"
android:textColor="@color/colorAccent"
android:textSize="@dimen/perfil_text_view_text_size"
android:paddingStart="15dp"
android:paddingEnd="5dp"/>
</android.support.design.widget.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)
如果我使用app:passwordToggleDrawable自定义drawable,TextInputLayout它不会消失.
相关风格:
<style name="TextLabelGray" parent="TextAppearance.AppCompat">
<!--//hint color And Label Color in False State-->
<item name="android:textColorHint">@color/gray_text_color</item>
<item name="android:textColorHighlight">@color/gray_text_color</item>
<item name="android:textColorLink">@color/gray_text_color</item>
<item name="colorAccent">@color/gray_text_color</item>
<item name="colorControlNormal">@color/gray_text_color</item>
<item name="colorControlActivated">@color/gray_text_color</item>
</style> …Run Code Online (Sandbox Code Playgroud) android android-support-library android-inputtype android-textinputedittext
我正在实现一个功能,当提示浮动时将textInputlayout提示文本的大小写更改为大写,反之亦然.
为此,我正在使用OnFocusChangeListener它的孩子textInputEditText.为了便于实现,我正在实施View.OnFocusChangeListener我的活动,如:
public class LoginActivity extends BaseActivity implements View.OnFocusChangeListener
Run Code Online (Sandbox Code Playgroud)
并覆盖活动中的方法,如:
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(findViewById(v.getId()) instanceof TextInputEditText){
TextInputLayout textInputLayout = (TextInputLayout) findViewById(v.getId()).getParent();
if(hasFocus){
textInputLayout.setHint(textInputLayout.getHint().toString().toUpperCase());
}else{
textInputLayout.setHint(Utility.modifiedLowerCase(textInputLayout.getHint().toString()));
}
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的方法中,我试图textInputLayout使用该行获取父视图
TextInputLayout textInputLayout = (TextInputLayout) findViewById(v.getId()).getParent();
Run Code Online (Sandbox Code Playgroud)
上面的代码行引发致命错误
java.lang.ClassCastException:android.widget.FrameLayout无法强制转换为android.support.design.widget.TextInputLayout
它非常明显,因为它返回了Framelayout无法投入的内容textInputLayout
如果我使用
TextInputLayout textInputLayout = (TextInputLayout) findViewById(v.getId()).getRootView();
Run Code Online (Sandbox Code Playgroud)
它再次抛出一个致命的错误,因为无法投入的getRootView()回报DecorViewtextInputLayout
我的问题是如何textInputLayout从孩子那里得到父母textInputEditText?
请指导.
android android-design-library android-textinputlayout android-textinputedittext
我想应用边框,TextInputLayout如图所示.
现在我已经实现了这样的.
但是,我想如图所示跟随(即标签放在边框内).
我实现的代码EditText如下.
<customviews.MyEditText
android:id="@+id/email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/edittext_border_background"
android:layout_marginEnd="30dp"
android:layout_marginStart="30dp"
android:layout_marginTop="45dp"
android:gravity="start"
android:hint="@string/hint_username"
android:imeOptions="actionNext|actionDone"
android:inputType="textEmailAddress|text"
android:padding="10dp"
android:textColor="@color/primary_text"
android:textColorHint="@color/secondary_text"
android:textSize="16sp"
/>
Run Code Online (Sandbox Code Playgroud)
并且,对于边框我已经应用了背景editetext_border_background.xml如下
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
android:padding="20dp">
<solid android:color="#FFFFFF"/>
<corners
android:bottomRightRadius="0dp"
android:bottomLeftRadius="0dp"
android:topLeftRadius="0dp"
android:topRightRadius="0dp"/>
<stroke
android:width="1dip"
android:color="@color/primary" />
</shape>
Run Code Online (Sandbox Code Playgroud)
当我尝试应用边框时,TextInputLayout它不会给出预期的输出.
谁能帮我??
我在我的应用程序中遇到问题,其中EditTexts上的错误弹出显示但文本不可见.它看起来像这样:
EditText我的应用程序中的所有s都会发生这种情况.这是一个布局XML的示例
布局:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
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:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/gradient"
android:fitsSystemWindows="true"
tools:context=".ui.onboarding.profile.OnboardingUserProfileActivity">
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="fitXY"
app:srcCompat="@drawable/shapes_background" />
<ProgressBar
android:id="@+id/login_progress"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:visibility="gone" />
<ScrollView
android:id="@+id/form"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="20dp">
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="80dp"
android:orientation="vertical">
<android.support.constraint.ConstraintLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="40dp"
android:layout_marginBottom="20dp">
<ImageView
android:id="@+id/profileImageView"
android:layout_width="160dp"
android:layout_height="160dp"
android:scaleType="fitXY"
android:src="@drawable/user_profile_placeholder"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<android.support.design.widget.FloatingActionButton
android:id="@+id/cameraImageButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:srcCompat="@android:drawable/ic_menu_camera" />
</android.support.constraint.ConstraintLayout>
<android.support.design.widget.TextInputLayout
android:id="@+id/firstnameTvLayout"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginBottom="20dp"
android:layout_weight="0.33"
android:textColorHint="@color/colorVeryLightGray"
android:theme="@style/AppTheme.WhiteColorAccent" …Run Code Online (Sandbox Code Playgroud) android android-layout kotlin 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
我的布局中有以下代码
\n\n<com.google.android.material.textfield.TextInputLayout\n android:id="@+id/tilPassword"\n style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"\n android:layout_width="match_parent"\n android:layout_height="wrap_content"\n android:hint="Password"\n app:layout_constraintEnd_toEndOf="parent"\n app:layout_constraintStart_toStartOf="parent"\n app:layout_constraintTop_toBottomOf="@id/tilUserName"\n app:passwordToggleEnabled="true">\n\n <com.google.android.material.textfield.TextInputEditText\n android:id="@+id/tiePassword"\n android:layout_width="match_parent"\n android:layout_height="wrap_content"\n android:imeOptions="actionDone"\n android:inputType="textPassword"\n android:selectAllOnFocus="true"\n android:singleLine="true" />\n\n </com.google.android.material.textfield.TextInputLayout>\nRun Code Online (Sandbox Code Playgroud)\n\n导航到 TextInputLayout 时 TalkBack 宣布:“密码密码编辑框”
\n\n所需的公告:“密码编辑框”
\n\n如果我删除其中一个,android:hint="Password"或者 android:inputType="textPassword"它会按预期工作。
设置提示的注意事项
\n\n提示应设置在 TextInputLayout 上,而不是 TextInputEditText 或 EditText 上。如果在 XML 中的子 EditText 上指定了提示,则 TextInputLayout 可能仍能正常工作;TextInputLayout 将使用 EditText\xe2\x80\x99s 提示作为其浮动标签。但是,以后调用修改提示将不会更新 TextInputLayout\xe2\x80\x99s 提示。为了避免意外行为,请在 TextInputLayout 上调用 setHint() 和 getHint(),而不是在 EditText 上调用。
\nandroid talkback android-textinputlayout android-textinputedittext
我正在尝试设置 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
我有以下场景:
芯片定义:
<chip xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
app:chipIcon="@drawable/ic_baseline_house_24"
android:text="@string/chips_holder"
app:closeIconEnabled="true"
/>
Run Code Online (Sandbox Code Playgroud)
包含 TextInputTeditText 的 xml 部分:
...
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
android:enabled="true"
android:hint="Gallery Selections"
android:layout_weight="1">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/fragment_gallery_text_input_edit_text_selections"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="false"
android:cursorVisible="false"
android:focusable="false"
android:focusableInTouchMode="false" />
</com.google.android.material.textfield.TextInputLayout>
...
Run Code Online (Sandbox Code Playgroud)
房间 liveData 结果观察器,提供来自一组变量的数据:
...
liveDataFilterGallery?.observe(
viewLifecycleOwner
){filterGalleryResult->
filterGalleryResult?.let { safeFilterGalleryResult->
safeFilterGalleryResult.apply {
val prefixes = arrayOf(
"Site No",
"Farm No",
"Site Id",
"Assignment Id",
"Category",
"Time Stamp")
fragmentGalleryTextInputEditTextSelections.setText(
(if(siteNo.isNullOrEmpty()) "" else "${prefixes[0]} = '$siteNo';") +
(if(farmNo.isNullOrEmpty()) "" else "${prefixes[1]} = '$farmNo';") +
(if(siteId.isNullOrEmpty()) "" else "${prefixes[2]} …Run Code Online (Sandbox Code Playgroud) android drawable kotlin android-chips android-textinputedittext
我有以下布局:
<androidx.coordinatorlayout.widget.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"
>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingStart="@dimen/side_margin"
android:paddingTop="@dimen/layout_margin_large"
android:paddingEnd="@dimen/side_margin"
android:paddingBottom="@dimen/layout_margin_default">
<!-- Some oother stuff....-->
<com.google.android.material.textview.MaterialTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/layout_margin_default"
android:text="@string/optional_data" />
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/brand"
android:layout_marginTop="@dimen/layout_margin_default"
app:startIconDrawable="@drawable/baseline_store_24">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/model"
android:layout_marginTop="@dimen/layout_margin_default"
app:startIconDrawable="@drawable/baseline_directions_car_24">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/build_year"
android:layout_marginTop="@dimen/layout_margin_default"
app:startIconDrawable="@drawable/baseline_event_24">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="date" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/license_plate"
android:layout_marginTop="@dimen/layout_margin_default"
app:startIconDrawable="@drawable/baseline_pin_24">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" …Run Code Online (Sandbox Code Playgroud) android textview android-layout material-design android-textinputedittext
我有一个包含 MYSDKActivity 的 SDK。在此活动布局中,我有 1 个编辑文本,用户可以在其中输入他的卡号。任何集成此 SDK 的 Android 客户端都可以在其应用程序类中使用ActivityLifecycleCallbacks并在此编辑文本上注册文本观察器,并且可以侦听用户卡号输入。
我想通过 Application 类阻止 SDK 编辑文本的使用。只有我的 SDK 可以访问此编辑文本并执行某些操作。我想阻止在我的 SDK 之外使用。
public class MyDemoApp extends Application implements Application.ActivityLifecycleCallbacks {
@Override
public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(this);
}
@Override
public void onActivityCreated(@NonNull Activity activity, @Nullable Bundle savedInstanceState) {}
@Override
public void onActivityStarted(@NonNull Activity activity) {}
@Override
public void onActivityResumed(@NonNull Activity activity) {
if (activity instanceof MYSDKActivity) {
final TextInputLayout textInputLayout = activity.findViewById(R.id.my_sdk_edit_text);
if (textInputLayout != null) {
ViewGroup textInputLayoutViewGroup = …Run Code Online (Sandbox Code Playgroud) security android android-edittext android-security android-textinputedittext