【发布时间】:2018-04-05 05:27:32
【问题描述】:
我在滚动视图中放置了近 20 个输入字段。我在底部有按钮。我需要验证字段。如果第一个字段为空,并且当按钮位于最底部时,我需要将页面自动移动到第一个编辑文本。但 我无法专注于特定的编辑文本来移动滚动。
我尝试了很多方法,但仍然无法正常工作。
这里是xml结构和java代码。我正在使用 include 合并滚动视图中的 xml“common_registration_update”。
main.xml:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/reg_scroll_view"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<include
android:id="@+id/topLayoutId"
layout="@layout/top_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginEnd="20dp"
android:layout_marginRight="20dp"
/>
<RelativeLayout
android:id="@+id/navigation_bar"
android:layout_width="match_parent"
android:layout_height="@dimen/registration_nav_bar_height"
android:layout_below="@+id/topLayoutId"
android:background="@color/colorGrey"
android:orientation="horizontal"
android:weightSum="1">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginLeft="@dimen/nav_bar_registration_txt_mrg_left"
android:text="@string/registration"
android:textColor="?attr/colorUserGroup"
android:textSize="@dimen/gps_txt_size" />
<TextView
android:id="@+id/approve"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="@dimen/nav_bar_status_txt"
android:text="@string/approval_status"
android:textColor="@color/colorBlack"
android:textSize="@dimen/gps_txt_size" />
</RelativeLayout>
<LinearLayout
android:id="@+id/info_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/navigation_bar"
android:layout_marginTop="@dimen/info_icon_mrg_top"
android:orientation="horizontal">
<Space
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="1" />
<TextView
android:layout_width="@dimen/common_ribbon_icon_size"
android:layout_height="@dimen/common_ribbon_icon_size"
android:layout_marginRight="@dimen/info_icon_mrg_right"
android:id="@+id/infoBtn"
android:background="@drawable/ic_info_3" />
</LinearLayout>
<include
android:id="@+id/retailer_form_new4"
layout="@layout/common_registration_update"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/info_layout" />
</RelativeLayout>
</ScrollView>
您可以在上面的布局中看到我正在使用包含。 “common_registration_update”
这个common_registration_update.xml有,
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/retail_profil"
android:layout_width="165dp"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/form_mrg_left"
android:layout_weight="0.01"
android:text="Profile Toko"
android:textColor="@color/colorBlack"
android:textSize="@dimen/help_medium2text"
android:textStyle="bold" />
<LinearLayout
android:id="@+id/retailer_form"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/retail_profil"
android:orientation="horizontal"
android:weightSum="2">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/form_mrg_left"
android:orientation="vertical">
<!--<TextView
android:layout_width="165dp"
android:layout_height="wrap_content"
android:textSize="@dimen/help_medium2text"
android:textColor="?attr/colorUserGroup"
android:text="@string/retailer_profile"
android:layout_weight="0.01" />-->
<TextView
android:id="@+id/reg_static_nama_toko"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/retail_mrg_top"
android:text="@string/retailer_name1"
android:textColor="@color/colorBlack" />
<TextView
android:id="@+id/reg_static_nama_pic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/tst_view_mrg_top"
android:text="@string/retailer_nama_pic"
android:textColor="@color/colorBlack" />
<TextView
android:id="@+id/reg_static_alamat_toko"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/tst_view_mrg_top"
android:text="@string/alamat_toco"
android:textColor="@color/colorBlack" />
<TextView
android:id="@+id/reg_static_tipe_toko"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="36dp"
android:text="@string/retailer_type1"
android:textColor="@color/colorBlack" />
<TextView
android:id="@+id/reg_static_trx1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/tst_view_mrg_top"
android:text="@string/trx1"
android:textColor="@color/colorBlack" />
<TextView
android:id="@+id/reg_static_trx2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/tst_view_mrg_top"
android:text="@string/trx2"
android:textColor="@color/colorBlack" />
<TextView
android:id="@+id/reg_static_trx3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/tst_view_mrg_top"
android:text="@string/trx3"
android:textColor="@color/colorBlack" />
<TextView
android:id="@+id/reg_static_trx4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="19dp"
android:text="@string/trx4"
android:textColor="@color/colorBlack" />
</LinearLayout>
<LinearLayout
android:layout_width="205dp"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginRight="@dimen/form_mrg_left"
android:layout_marginTop="21dp"
android:layout_weight="1.5"
android:orientation="vertical">
<EditText
android:id="@+id/store_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/input_field_style"
android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz0123456789"
android:hint="Nama toko"
android:inputType="textNoSuggestions"
android:maxLength="30"
android:maxLines="1"
android:padding="@dimen/input_padding"
android:textColor="@color/colorBlack"
android:textSize="@dimen/help_medium1text" />
<EditText
android:id="@+id/pic_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/input_mrg_top"
android:background="@drawable/input_field_style"
android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz"
android:hint="@string/pichint"
android:maxLength="50"
android:maxLines="1"
android:padding="@dimen/input_padding"
android:textColor="@color/colorBlack"
android:textSize="@dimen/help_medium1text" />
<//this goes like 20 fields>
</LinearLayout>
<RelativeLayout>
在代码中,
我使用父滚动视图 id 来引用特定的编辑文本..
例如:
mStoreName 是edittext 对象,mScrollView 是ScrollView 对象,
mStoreName = (EditText) findViewById(R.id.store_name);
mScrollview = (ScrollView) findViewById(R.id.reg_scroll_view); //parent scrollview
if (checkKeyExists("store_name") && TextUtils.isEmpty(mStoreName.getText())) {
showToastErrMsg("Please enter StoreName", mStoreName);
}
public void showToastErrMsg(String Msg, final View inputTextField) {
final Dialog dialog = new Dialog(RetailerRegistrationActivity.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.registration_err_modal);
Button ok = (Button) dialog.findViewById(R.id.ok_button);
TextView textView = (TextView) dialog.findViewById(R.id.response);
textView.setText(Msg);
dialog.setCancelable(false);
dialog.show();
ok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View view) {
new Handler().post(new Runnable() {
@Override
public void run() {
//here redirecting to scroll to specific edittext but it's not working.
//mScrollview.scrollTo(0, inputTextField.getScrollY());
//mScrollview.pageScroll(inputTextField.FOCUS_UP);
// mScrollview.scrollTo(0,inputTextField.getScrollY());
// mScrollview.smoothScrollTo(0,500);
mScrollview.scrollTo(0,inputTextField.getBottom());
dialog.dismiss();
inputTextField.requestFocus();
// scrollToView(mScrollview,inputTextField);
}
});
}
});
}
我尝试将所有注释行都集中在要移动的编辑文本上,但它没有在光标位于编辑文本中的特定位置上移动。
【问题讨论】:
标签: android android-layout android-edittext android-scrollview