使android EditText垂直可滚动

时间:2015-04-03 05:58:57

标签: java android xml android-edittext

我是Android开发的新手,我有一个让Android EditText垂直滚动的问题。 EditText的垂直滚动对我不起作用。我关注了几个帖子和资源,但没有一个对我有用。 我使用以下代码示例来启用垂直滚动功能。

this.detailsEditText.setScroller(new Scroller(this));
this.detailsEditText.setMaxLines(1);
this.detailsEditText.setVerticalScrollBarEnabled(true);
this.detailsEditText.setMovementMethod(new ScrollingMovementMethod()); 

以下是我在我的应用中使用的活动类和布局资源文件。

CreateAppointmentActivity.java

package lk.iit.appointmentmanagerapp.activities;

import java.sql.Date;
import java.sql.Time;

import lk.iit.appointmentmanagerapp.data.Appointment;
import lk.iit.appointmentmanagerapp.data.DatabaseHandler;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Scroller;

public class CreateAppointmentActivity extends Activity {

    private EditText titleEditText; 
    private EditText timeEditText;
    private EditText detailsEditText;
    private EditText dateEditText;
    private Button saveButton;
    private Button resetButton;
    private final DatabaseHandler handler = new DatabaseHandler(this);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_create_appointment);

        this.titleEditText = (EditText)(this.findViewById(R.id.edit_title));
        this.timeEditText = (EditText)(this.findViewById(R.id.edit_time));
        this.detailsEditText = (EditText)(this.findViewById(R.id.edit_details));
        this.dateEditText = (EditText)(this.findViewById(R.id.edit_date));

        this.detailsEditText.setScroller(new Scroller(this));
        this.detailsEditText.setMaxLines(1);
        this.detailsEditText.setVerticalScrollBarEnabled(true);
        this.detailsEditText.setMovementMethod(new ScrollingMovementMethod());

        SharedPreferences preferences = getSharedPreferences("date_variables", MODE_PRIVATE);   
        this.dateEditText.setText(preferences.getInt("Year", 0) + "-" + preferences.getInt("Month", 0) + "-" + preferences.getInt("Day", 0));
        this.dateEditText.setEnabled(false);

        this.saveButton = (Button)(this.findViewById(R.id.save_new_appointment_button));
        this.saveButton.setOnClickListener(new View.OnClickListener() {
            @SuppressWarnings("deprecation")
            @Override
            public void onClick(View v) {
                String[] dateComponents = dateEditText.getText().toString().split("-");
                String[] timeComponents = timeEditText.getText().toString().split(":");
                Appointment appointment = new Appointment();

                appointment.setAppointment_title(titleEditText.getText().toString());
                appointment.setAppointment_date(new Date(Integer.parseInt(dateComponents[0]), Integer.parseInt(dateComponents[1]), Integer.parseInt(dateComponents[2])));
                appointment.setAppointment_time(new Time(Integer.parseInt(timeComponents[0]), Integer.parseInt(timeComponents[1]), Integer.parseInt(timeComponents[2])));
                appointment.setAppointment_details(detailsEditText.getText().toString());

                boolean inserted = handler.addAppointment(appointment);
                //
                //
            }
        });
        this.resetButton = (Button)(this.findViewById(R.id.reset_button));
        this.resetButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                titleEditText.setText("");
                timeEditText.setText("");
                detailsEditText.setText("");
                dateEditText.setText("");
            }
        });
    }

}

activity_create_appointment.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    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"
    android:background="@color/background"
    tools:context="lk.iit.appointmentmanagerapp.activities.CreateAppointmentActivity" >

    <TextView
       android:id="@+id/create_activity_title"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="@string/welcome_create"
       android:layout_centerHorizontal="true"
       android:layout_marginTop="15dip"
       android:layout_marginBottom="25dip"
       android:textSize="18.5sp"
       android:textColor="#ffffff" />

    <TextView
      android:id="@+id/title_textview"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_below="@+id/create_activity_title"
      android:layout_marginTop="15dip"
      android:text="@string/title_textview_text"
      android:textAppearance="?android:attr/textAppearanceMedium" />

    <EditText
       android:id="@+id/edit_title"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_below="@+id/create_activity_title"
       android:layout_marginTop="15dip"
       android:layout_toRightOf="@+id/title_textview"
       android:layout_marginLeft="30dip"
       android:background="#ffffff"
       android:ems="10"
       android:inputType="text" >
       <requestFocus />
   </EditText>

    <TextView
      android:id="@+id/time_textview"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_below="@+id/title_textview"
      android:layout_marginTop="25dip"  
      android:text="@string/time_textview_text"
      android:textAppearance="?android:attr/textAppearanceMedium" 
      />

   <EditText
      android:id="@+id/edit_time"
      android:background="#ffffff"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_toRightOf="@+id/time_textview"
      android:layout_below="@+id/edit_title"
      android:layout_marginLeft="25dip"
      android:layout_marginTop="25dip"  
      android:ems="10"
      android:inputType="time" />

   <TextView
      android:id="@+id/details_textview"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_below="@+id/time_textview"
      android:text="@string/details_textview_text"
      android:layout_marginTop="25dip"
      android:textAppearance="?android:attr/textAppearanceMedium" />

    <EditText
        android:id="@+id/edit_details"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/details_textview"
        android:layout_alignBottom="@+id/details_textview"
        android:layout_alignLeft="@+id/edit_title"
        android:background="#ffffff"
        android:ems="10"
        android:inputType="text" >
    </EditText>


    <TextView
      android:id="@+id/date_textview"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_below="@+id/details_textview"
      android:text="Date"
      android:layout_marginTop="25dip"
      android:textAppearance="?android:attr/textAppearanceMedium" />

    <EditText
        android:id="@+id/edit_date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/date_textview"
        android:layout_below="@+id/edit_details"
        android:background="#ffffff"
        android:layout_marginLeft="25dip"
        android:layout_marginTop="25dip"    
        android:ems="10"
        android:inputType="date" >
    </EditText>


    <Button 
        android:id="@+id/save_new_appointment_button" 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/date_textview"
        android:layout_marginTop="15dip"
        android:layout_marginBottom="10dip"
        android:layout_centerHorizontal="true"
        android:text="@string/save_button_text"
        android:textAllCaps="false" />
    <Button
        android:id="@+id/reset_button"  
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/save_new_appointment_button"
        android:layout_marginTop="2dip"
        android:layout_centerHorizontal="true"
        android:text="@string/reset_button_text"
        android:textAllCaps="false" />

</RelativeLayout>

如果我犯了任何错误,请耐心等待,因为我对这个发展领域比较陌生。 如果有人帮我解决这个问题,我将不胜感激。

2 个答案:

答案 0 :(得分:0)

在java代码中尝试:

EditText dwEdit = (EditText) findViewById(R.id.DwEdit);       
dwEdit.setOnTouchListener(new OnTouchListener() {

                public boolean onTouch(View view, MotionEvent event) {
                    // TODO Auto-generated method stub
                    if (view.getId() ==R.id.DwEdit) {
                        view.getParent().requestDisallowInterceptTouchEvent(true);
                        switch (event.getAction()&MotionEvent.ACTION_MASK){
                        case MotionEvent.ACTION_UP:
                            view.getParent().requestDisallowInterceptTouchEvent(false);
                            break;
                        }
                    }
                    return false;
                }
            });

在你的xml中:

<EditText
        android:id="@+id/DwEdit"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:minLines="10"
        android:scrollbarStyle="insideInset"
        android:scrollbars="vertical" 
        android:overScrollMode="always"
        android:inputType="textCapSentences">
        </EditText> 

答案 1 :(得分:0)

如果您只想在detailEditText中滚动editText,那么您可以指定editText 50dp的高度或者您的需要,并从您的editText中删除inputType =“text”....它可以满足您的需求..

并且您不需要java相对于该editText的任何代码..