Android: rendre multiline edittext scrollable, désactivé dans la vue de défilement vertical

je développe une application dans laquelle je suis structuré à un point.

comme d'après mon exigence d'application j'ai créé ScrollView horizontal en xml et puis ScrollView vertical en .java comme :

// Vertical Scroll view in Linear layout
ScrollView scrollView = new ScrollView(this);
scrollView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));

puis j'ai créé une vue de table programmatically et l'ai ajoutée dans scrollview. J'ai créé le texte d'édition multiligne et l'ai désactivé parce que je veux mettre le texte dans le temps d'exécution et l'ai ajouté dans la vue de table comme une ligne..

EditText editText = new EditText(this);
editText.setId(1);
editText.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT,0f));
editText.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE);
editText.setGravity(Gravity.TOP|Gravity.LEFT);
editText.setHint("Comment");
editText.setSingleLine(false);
editText.setLines(5);
editText.setMaxLines(5);
editText.setText(CommentFromDB);
editText.setEnabled(false);

tableLayout.addView(editText);

// Add table in Horizontal scroll view
scrollView.addView(tableLayout);

maintenant je veux faire modifier le texte scrollable que je réalise par code:

editText.setOnTouchListener(new OnTouchListener() {
        public boolean onTouch(View view, MotionEvent event) {
            if (view.getId() == 1) {
                view.getParent().requestDisallowInterceptTouchEvent(true);
                switch (event.getAction()&MotionEvent.ACTION_MASK){
                case MotionEvent.ACTION_UP:
                    view.getParent().requestDisallowInterceptTouchEvent(false);
                    break;
                case MotionEvent.ACTION_DOWN:
                    view.getParent().requestDisallowInterceptTouchEvent(false);
                    break;
                }
            }
            return false;
        }
    });

mais l'edittext ne se défile pas facilement. J'ai besoin de le défilement lisse.

S'il vous plaît, guidez-moi.

2
demandé sur Manoj Fegde 2014-04-27 08:33:54

3 réponses

vous pouvez faire une chose.

il suffit de rendre le texte d'édition focalisable false. Et appliquer sur l'auditeur tactile.

donc l'utilisateur n'est pas en mesure d'éditer le texte et il fera défiler comme:

EditText editText = new EditText(this);
editText.setId(1);
editText.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT,0f));
editText.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE);
editText.setGravity(Gravity.TOP|Gravity.LEFT);
editText.setHint("Comment");
editText.setSingleLine(false);
editText.setLines(5);
editText.setMaxLines(5);
editText.setText(CommentFromDB);
editTextRemark.setFocusable(false);

appliquer onTouchListner as:

editTextRemark.setOnTouchListener(touchListener);

et

OnTouchListener touchListener = new View.OnTouchListener(){
    public boolean onTouch(final View v, final MotionEvent motionEvent){
        if(v.getId() == 1){
            v.getParent().requestDisallowInterceptTouchEvent(true);
            switch (motionEvent.getAction() & MotionEvent.ACTION_MASK){
                case MotionEvent.ACTION_UP:
                    v.getParent().requestDisallowInterceptTouchEvent(false);
                break;
            }
        }
        return false;
    }
};

espérons que cette réponse vous aidera.

7
répondu Optim India 2014-04-30 06:21:35
EditText editText = findViewById(R.id.editText);
editText.setOnTouchListener(new OnTouchListener() {
               public boolean onTouch(View view, MotionEvent event) {
                    // TODO Auto-generated method stub
                    if (view.getId() ==R.id.common_remark) {
                        view.getParent().requestDisallowInterceptTouchEvent(true);
                        switch (event.getAction()&MotionEvent.ACTION_MASK){
                        case MotionEvent.ACTION_UP:
                            view.getParent().requestDisallowInterceptTouchEvent(false);
                            break;
                        }
                    }
                    return false;
                }
        });

et dans xml ajouter cette ligne dans EditText:

android:scrollbars = "vertical"
6
répondu Rahul Patidar 2015-06-03 07:09:39

ajouter à EditText

 android:inputType="textMultiLine"
0
répondu Gdroid 2015-06-03 07:08:57