在滚动视图编辑文本中滚动两个都有效,但在编辑文本中如果我们输入没有行,则用户无法看到编辑文本,它会滚动到顶部。

时间:2016-08-24 06:38:23

标签: android android-edittext scrollview

在我的布局中,我在可滚动的编辑文本中有滚动视图。两个人都在使用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();
    }
}
你可以查看这段代码。

先谢谢。

2 个答案:

答案 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;
                }
            });

仍然回答不完整。

以下链接可以帮助您。

Stop Scroll view

Stop scrollview from seting focus.