gpt4 book ai didi

android - EditText.setError() 的弹出消息布局看起来很奇怪

转载 作者:行者123 更新时间:2023-11-29 02:34:10 27 4
gpt4 key购买 nike

我在我的工具栏中使用了一个 EditText View ,当点击“检查”图标时,应用程序将检查所有字段是否为空。如果为空,则调用 setError() 方法。但是弹出消息看起来很奇怪(在下图中)。 enter image description here

而且我隐藏了软输入,它看起来像这样。 enter image description here

另一个问题是 EditText View 在根布局中,当调用 setError() 时, View 自动向上滚动(Appbarlayout 被隐藏)。如何让布局正确地在 View 下方? enter image description here

这是布局设计的问题吗?

布局.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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
>

<android.support.v7.widget.Toolbar
android:id="@+id/tool_bar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:minHeight="?attr/actionBarSize"
android:theme="@style/ActionbarStyle"
app:layout_scrollFlags="scroll|enterAlways|snap">

<EditText
android:id="@+id/et_ItemName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/item_name"
android:inputType="text|textAutoCorrect"
android:maxLength="20"
android:textStyle="bold">

<requestFocus />
</EditText>
</android.support.v7.widget.Toolbar>
</android.support.design.widget.AppBarLayout>

<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/layout_padding"
android:paddingLeft="@dimen/layout_padding"
android:paddingRight="@dimen/layout_padding"
app:layout_behavior="@string/appbar_scrolling_view_behavior">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
app:srcCompat="@drawable/ic_money_black_24dp" />

<EditText
android:id="@+id/et_Dollar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="end|right"
android:inputType="numberDecimal"
android:textStyle="bold" />
</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
app:srcCompat="@drawable/ic_sort_black_24dp" />

<Button
android:id="@+id/btn_SelectCategory"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:gravity="end|right|center_vertical"
android:hint="@string/select_category" />
</LinearLayout>

<EditText
android:id="@+id/et_Note"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="@drawable/background_border"
android:gravity="top|left"
android:hint="@string/note"
android:inputType="textMultiLine"
android:minLines="1"
android:padding="@dimen/TextPAdding" />

<include
android:id="@+id/view_image_container"
layout="@layout/layout_add_photo"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/widget_padding" />

</LinearLayout>
</android.support.v4.widget.NestedScrollView>

</android.support.design.widget.CoordinatorLayout>

最佳答案

  • 您可以使用 Snackbar 作为验证,它看起来好多了并且有自定义,因为您可以在特定时期显示正确的消息时间...示例:在 textChangedListener 上或在按钮单击上-->

     submitBT = (Button) findViewById(R.id.submitBT);

    submitBT.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    if (loginET.getText().toString().isEmpty() || loginET.length() == 0 || loginET.length() > 50) {
    Snackbar.make(view, "Please Enter Username/Email", Snackbar.LENGTH_SHORT).show();
    return;
    }
    if (passwordET.getText().toString().isEmpty() || passwordET.length() == 0 || passwordET.length() > 50) {
    Snackbar.make(view, "Password", Snackbar.LENGTH_SHORT).show();
    }
    }
    });

    你也可以使用 textChangedListener...而且view不会像seterror那样自动向上滚动

关于android - EditText.setError() 的弹出消息布局看起来很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47975548/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com