在我的布局中,我在可滚动的编辑文本中有滚动视图。两个人都在使用setOnTouchListener
。如果我们触摸edittext它是滚动,布局滚动是交互。
但是问题是当用户输入edittext时它正在移动布局顶部而用户无法看到编辑文本字段。
当用户键入两个卷轴时正在运行。
我认为解决方案将是当用户点击编辑文本时我们需要停止布局滚动。这样编辑文本将对用户可见,并且当用户输入时它不会移动。但是如果有人知道我不知道如何实现它请帮帮我。
布局代码: -
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Welcome To Register Page"
android:textSize="20dp"
android:textStyle="bold"
android:id="@+id/title"
android:textColor="@android:color/holo_blue_bright"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/title"
android:layout_marginTop="5dp"
android:orientation="vertical"
android:id="@+id/lin1"
android:background="@drawable/shape">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Personal Details"
android:gravity="center"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="First Name :"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/fname"
android:inputType="textCapSentences"
android:imeOptions="actionNext"
android:layout_marginLeft="5dp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Last Name :"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/lname"
android:inputType="textCapSentences"
android:imeOptions="actionNext"
android:layout_marginLeft="5dp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Phone No :"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/pno"
android:inputType="number"
android:imeOptions="actionNext"
android:layout_marginLeft="5dp"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/lin1"
android:id="@+id/lin2"
android:orientation="vertical"
android:layout_marginTop="10dp"
android:background="@drawable/shape">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Address"
android:gravity="center"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="City/Town :"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/city"
android:inputType="textCapSentences"
android:imeOptions="actionNext"
android:layout_marginLeft="5dp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="State :"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/state"
android:inputType="textCapSentences"
android:imeOptions="actionNext"
android:layout_marginLeft="5dp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Country :"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/country"
android:inputType="textCapSentences"
android:imeOptions="actionNext"
android:layout_marginLeft="5dp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Zip Code :"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/zipcode"
android:inputType="number"
android:imeOptions="actionNext"
android:layout_marginLeft="5dp"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/lin3"
android:layout_below="@id/lin2"
android:orientation="vertical"
android:layout_marginTop="10dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Enter Full Address"
android:gravity="center"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="10"
android:lines="10"
android:maxEms="1000"
android:scrollbars="vertical"
android:layout_marginTop="5dp"
android:id="@+id/address"
android:gravity="top"
android:background="@drawable/shape"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/lin4"
android:layout_below="@id/lin3"
android:orientation="vertical"
android:layout_marginTop="10dp"
android:background="@drawable/shape">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Other Details"
android:gravity="center"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="E-Mail :"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/email"
android:singleLine="true"
android:imeOptions="actionDone"
android:layout_marginLeft="5dp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Date of Birth :"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/dob"
android:focusable="false"
android:imeOptions="actionNone"
android:layout_marginLeft="5dp"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/lin5"
android:layout_below="@id/lin4"
android:orientation="vertical"
android:layout_marginTop="10dp"
android:background="@drawable/shape">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Other Details"
android:gravity="center"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="E-Mail :"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/email_dum"
android:singleLine="true"
android:imeOptions="actionDone"
android:layout_marginLeft="5dp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Date of Birth :"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/dob_dum"
android:focusable="false"
android:imeOptions="actionNone"
android:layout_marginLeft="5dp"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/lin6"
android:layout_below="@id/lin5"
android:orientation="vertical"
android:layout_marginTop="10dp"
android:background="@drawable/shape">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Other Details"
android:gravity="center"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="E-Mail :"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/email_dum1"
android:singleLine="true"
android:imeOptions="actionDone"
android:layout_marginLeft="5dp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Date of Birth :"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/dob_dum1"
android:focusable="false"
android:imeOptions="actionNone"
android:layout_marginLeft="5dp"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_below="@id/lin6"
android:gravity="center">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Submit"
android:id="@+id/submit"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/clear"
android:text="Clear"
android:layout_marginLeft="5dp"/>
</LinearLayout>
</RelativeLayout>
</ScrollView>
主要活动代码: -
public class MainActivity extends AppCompatActivity {
EditText first_name,last_name,phone_no,city,state,country,zip_code,full_address,email,dob;
Button submit,clear;
private int year;
private int month;
private int day;
private Calendar cal;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
first_name=(EditText)findViewById(R.id.fname);
last_name=(EditText)findViewById(R.id.lname);
phone_no=(EditText)findViewById(R.id.pno);
city=(EditText)findViewById(R.id.city);
state=(EditText)findViewById(R.id.state);
zip_code=(EditText)findViewById(R.id.zipcode);
country=(EditText)findViewById(R.id.country);
full_address=(EditText)findViewById(R.id.address);
email=(EditText)findViewById(R.id.email);
dob=(EditText)findViewById(R.id.dob);
submit=(Button) findViewById(R.id.submit);
clear=(Button) findViewById(R.id.clear);
cal = Calendar.getInstance();
day = cal.get(Calendar.DAY_OF_MONTH);
month = cal.get(Calendar.MONTH);
year = cal.get(Calendar.YEAR);
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(MainActivity.this,result.class);
Bundle bundle=new Bundle();
bundle.putString("First_Name",first_name.getText().toString());
bundle.putString("Last_Name",last_name.getText().toString());
bundle.putString("Phone_No",phone_no.getText().toString());
bundle.putString("City",city.getText().toString());
bundle.putString("State",state.getText().toString());
bundle.putString("Country",country.getText().toString());
bundle.putString("Zip_Code",zip_code.getText().toString());
bundle.putString("Full_Address",full_address.getText().toString());
bundle.putString("Email",email.getText().toString());
bundle.putString("DOb",dob.getText().toString() );
intent.putExtras(bundle);
startActivity(intent);
}
});
clear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
first_name.setText("");
last_name.setText("");
phone_no.setText("");
city.setText("");
state.setText("");
country.setText("");
zip_code.setText("");
full_address.setText("");
email.setText("");
dob.setText("");
}
});
dob.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DateDialog();
}
});
full_address.setOnTouchListener(new EditText.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
// Disallow ScrollView to intercept touch events.
v.getParent().requestDisallowInterceptTouchEvent(true);
break;
case MotionEvent.ACTION_UP:
// Allow ScrollView to intercept touch events.
v.getParent().requestDisallowInterceptTouchEvent(false);
break;
}
// Handle ListView touch events.
v.onTouchEvent(event);
return true;
}
});
}
private void DateDialog() {
DatePickerDialog.OnDateSetListener listener=new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth)
{
dob.setText(dayOfMonth+"/"+monthOfYear+"/"+year);
}};
DatePickerDialog dpDialog=new DatePickerDialog(this, listener, year, month, day);
dpDialog.show();
}
}
你可以查看这段代码。
先谢谢。
答案 0 :(得分:0)
您可以将“线性布局”用作父类而不是“相对布局”。因此,编辑文本的位置应按其权重确定,并且在输入时可能会显示。
答案 1 :(得分:0)
以下是我从其他SO问题和谷歌中找到的答案。当编辑文本聚焦时父母滚动不起作用将有所帮助。
full_address.setOnTouchListener(new EditText.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
// Disallow ScrollView to intercept touch events.
v.getParent().requestDisallowInterceptTouchEvent(true);
break;
case MotionEvent.ACTION_UP:
// Allow ScrollView to intercept touch events.
v.getParent().requestDisallowInterceptTouchEvent(false);
break;
}
// Handle ListView touch events.
v.onTouchEvent(event);
return true;
}
});
仍然回答不完整。
以下链接可以帮助您。