2017-08-19 3 views
0

Ich mache eine Android App zum Speichern von Notizen. Ich habe meine editText wie TextView vor dem Klicken auf die Schaltfläche verhalten. Wenn Sie auf die Schaltfläche Bearbeiten klicken, nimmt der editText den Wert an. Jetzt tritt Problem auf, wenn ich diesen Wert speichere und wenn es angezeigt wird. EditText kommt nicht mehrzeilig wie ich will, sondern in einer einzigen Zeile.EditText kann nicht multiline gemacht werden

Ich deklarierte die inputType -Eigenschaft von editText als mehrzeilige in XML-Datei, aber im Code nach der Initialisierung der editText ich setze seine inputType -Eigenschaft als null in einem Versuch, es sowohl null als auch mehrzeilig zu machen, aber leider! Es passiert nicht.

Unten ist mein XML und Java-Code:

XML

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 


<android.support.v7.widget.Toolbar 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    app:theme="@style/AppTheme.AppBarOverlay" 
    android:background="@color/colorToolBar" 
    android:id="@+id/idToolbarNoteDetails" 
    android:padding="10dp"/> 


<android.support.design.widget.FloatingActionButton 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:id="@+id/idFloatingActionButtonEdit" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentRight="true" 
    app:srcCompat="@android:drawable/ic_menu_edit" 
    android:layout_margin="20dp"/> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Colors: " 
    android:textStyle="italic" 
    android:visibility="invisible" 
    android:id="@+id/idTextViewColors" 
    android:layout_below="@+id/idToolbarNoteDetails" 
    android:layout_margin="10dp" 
    android:textSize="15dp"/> 

<TextView 
    android:layout_width="25dp" 
    android:layout_height="25dp" 
    android:id="@+id/idColorRed" 
    android:visibility="invisible" 
    android:layout_margin="10dp" 
    android:layout_below="@+id/idToolbarNoteDetails" 
    android:layout_toRightOf="@+id/idTextViewColors" 
    android:background="@drawable/textview_circle_red" /> 

<TextView 
    android:layout_width="25dp" 
    android:layout_height="25dp" 
    android:visibility="invisible" 
    android:id="@+id/idColorBlue" 
    android:layout_margin="10dp" 
    android:layout_below="@id/idToolbarNoteDetails" 
    android:layout_toRightOf="@+id/idColorRed" 
    android:background="@drawable/textview_circle_blue"/> 

<TextView 
    android:layout_width="25dp" 
    android:layout_height="25dp" 
    android:id="@+id/idColorGreen" 
    android:visibility="invisible" 
    android:layout_margin="10dp" 
    android:layout_below="@id/idToolbarNoteDetails" 
    android:layout_toRightOf="@+id/idColorBlue" 
    android:background="@drawable/textview_circle_green"/> 

<EditText 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/idTextViewColors" 
    android:layout_margin="10dp" 
    android:inputType="textShortMessage" 
    android:background="@android:color/transparent" 
    android:textSize="40sp" 
    android:hint="Title" 
    android:textStyle="bold" 
    android:id="@+id/idEditTextTitle"/> 

<EditText 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/idEditTextTitle" 
    android:hint="Content" 
    android:inputType="textMultiLine" 
    android:lines="5" 
    android:gravity="top|left" 
    android:layout_margin="10dp" 
    android:textSize="20sp" 
    android:background="@android:color/transparent" 
    android:id="@+id/idEditTextContent"/> 

<EditText 
    android:layout_width="250dp" 
    android:id="@+id/idEditTextTag" 
    android:layout_height="35dp" 
    android:hint="#TAG" 
    android:background="@android:color/transparent" 
    android:layout_alignParentBottom="true" 
    android:textSize="15dp" 
    android:textStyle="italic" 
    android:layout_margin="10dp"/> 

<android.support.design.widget.FloatingActionButton 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:id="@+id/idFloatingActionButtonSave" 
    android:layout_above="@+id/idFloatingActionButtonEdit" 
    android:layout_margin="20dp" 
    android:visibility="invisible" 
    app:srcCompat="@android:drawable/ic_menu_save" 
    android:layout_alignParentRight="true"/> 

JAVA

package mynotes.pawanjotsingh.com.mynotes.activities; 

import android.content.Intent; 
import android.graphics.Color; 
import android.support.design.widget.FloatingActionButton; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.support.v7.widget.Toolbar; 
import android.text.InputType; 
import android.view.View; 
import android.view.animation.Animation; 
import android.view.animation.AnimationUtils; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.Toast; 

import java.text.SimpleDateFormat; 
import java.util.Date; 
import java.util.Locale; 

import mynotes.pawanjotsingh.com.mynotes.R; 
import mynotes.pawanjotsingh.com.mynotes.adapters.RecyclerAdapter; 
import mynotes.pawanjotsingh.com.mynotes.dbhelper.DataBaseHelper; 
import mynotes.pawanjotsingh.com.mynotes.models.NoteModel; 

public class NoteDetailsActivity extends AppCompatActivity { 

enum Colors{RED, BLUE, GREEN, WHITE} 

DataBaseHelper dataBaseHelper; 
FloatingActionButton floatingActionButtonEdit,floatingActionButtonSave; 
EditText editTextTitle,editTextContent,editTextTag; 
String stringTitle,stringContent,stringTag; 
TextView textViewColors,textViewRed,textViewBlue,textViewGreen; 
Toolbar toolbar; 
int color,colorRed,colorBlue,colorGreen; 

String id=""; 

Colors currentBackgroundColour = Colors.WHITE; 


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

    editTextTitle=(EditText) findViewById(R.id.idEditTextTitle); 
    editTextTitle.setInputType(InputType.TYPE_NULL); 

    editTextContent=(EditText) findViewById(R.id.idEditTextContent); 
    editTextContent.setInputType(InputType.TYPE_NULL); 

    editTextTag=(EditText) findViewById(R.id.idEditTextTag); 
    editTextTag.setInputType(InputType.TYPE_NULL); 

    toolbar=(Toolbar) findViewById(R.id.idToolbarNoteDetails); 
    setSupportActionBar(toolbar); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    getSupportActionBar().setTitle("Edit"); 

    toolbar.setNavigationOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      onBackPressed(); 
     } 
    }); 

    dataBaseHelper=new DataBaseHelper(this); 

    textViewColors=(TextView) findViewById(R.id.idTextViewColors); 
    textViewRed=(TextView) findViewById(R.id.idColorRed); 
    textViewBlue=(TextView) findViewById(R.id.idColorBlue); 
    textViewGreen=(TextView) findViewById(R.id.idColorGreen); 

    colorRed=Color.parseColor("#FE7676"); 
    colorBlue=Color.parseColor("#76FEEC"); 
    colorGreen=Color.parseColor("#99FE76"); 

    stringTitle=getIntent().getStringExtra("text_title"); 
    stringContent=getIntent().getStringExtra("text_content"); 
    stringTag=getIntent().getStringExtra("text_tag"); 
    id = getIntent().getStringExtra("id"); 
    color=getIntent().getIntExtra("color", Color.WHITE); 
    getWindow().getDecorView().setBackgroundColor(color); 


    editTextTitle.setText(stringTitle); 
    editTextContent.setText(stringContent); 
    editTextTag.setText(stringTag); 


    floatingActionButtonSave=(FloatingActionButton) findViewById(R.id.idFloatingActionButtonSave); 
    floatingActionButtonSave.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      save(); 
     } 
    }); 


    floatingActionButtonEdit=(FloatingActionButton) findViewById(R.id.idFloatingActionButtonEdit); 
    floatingActionButtonEdit.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      floatingActionButtonSave.setVisibility(View.VISIBLE); 
      Animation animationLeft=AnimationUtils.loadAnimation(getApplicationContext(),R.anim.move_left); 
      floatingActionButtonSave.startAnimation(animationLeft); 

      textViewColors.setVisibility(View.VISIBLE); 
      Animation animationDown= AnimationUtils.loadAnimation(getApplicationContext(),R.anim.move_down); 
      textViewColors.startAnimation(animationDown); 

      textViewRed.setVisibility(View.VISIBLE); 
      textViewRed.startAnimation(animationDown); 

      textViewBlue.setVisibility(View.VISIBLE); 
      textViewBlue.startAnimation(animationDown); 

      textViewGreen.setVisibility(View.VISIBLE); 
      textViewGreen.startAnimation(animationDown); 
      editNote(); 


     } 
    }); 

    textViewRed.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      currentBackgroundColour=Colors.RED; 
      getWindow().getDecorView().setBackgroundColor(Color.parseColor("#FE7676")); 
     } 
    }); 

    textViewBlue.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      currentBackgroundColour=Colors.BLUE; 
      getWindow().getDecorView().setBackgroundColor(Color.parseColor("#76FEEC")); 
     } 
    }); 

    textViewGreen.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      currentBackgroundColour = Colors.GREEN; 
      getWindow().getDecorView().setBackgroundColor(Color.parseColor("#99FE76")); 
     } 
    }); 

} 


@Override 
public void onBackPressed() { 
    Intent intent=new Intent(this,MainActivity.class); 
    startActivity(intent); 
} 


public void editNote(){ 


    editTextTitle.setInputType(InputType.TYPE_CLASS_TEXT); 
    editTextTitle.setFocusable(true); 
    editTextTitle.requestFocus(); 

    editTextContent.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_MULTI_LINE); 


    editTextTag.setInputType(InputType.TYPE_CLASS_TEXT); 



} 

public void save() { 


    int colour=Color.WHITE; 

    switch (currentBackgroundColour){ 
     case RED: 
      colour = colorRed; 
      break; 
     case BLUE: 
      colour = colorBlue; 
      break; 
     case GREEN: 
      colour = colorGreen; 
      break; 
    } 


    final NoteModel noteModel = new NoteModel(); 
    noteModel.setTitle(editTextTitle.getText().toString()); 
    noteModel.setContent(editTextContent.getText().toString()); 
    noteModel.setTag(editTextTag.getText().toString()); 
    noteModel.setId(id); 
    noteModel.setDate(getDateTime()); 
    noteModel.setColor(colour); 

    boolean isModified=dataBaseHelper.editNote(noteModel); 
    if(isModified==true){ 
     Toast.makeText(this, "Modifications saved", Toast.LENGTH_SHORT).show(); 

     finish(); 

    } 
    else Toast.makeText(this, "Unable to save modifications", Toast.LENGTH_SHORT).show(); 

} 

private String getDateTime() { 
    SimpleDateFormat dateFormat = new SimpleDateFormat(
      "dd-MM-yyyy HH:mm:ss", Locale.getDefault()); 
    Date date = new Date(); 
    return dateFormat.format(date); 
} 

Links zu sc reenshots

This image is when I click edit button. This works just fine, text goes to another line.

This image is when i click the save button. The text goes back to single line instead of multi-line.

+0

Ich versichere Ihnen, es ist nicht:/ Ich habe diese Lösung versucht, es funktioniert nicht in meinem Fall –

+0

Wenn Sie ein Problem mit editTextContent haben: Sie setzen den inputType auf 'InputType.TYPE_NULL' in onCreate () und später setzen Sie es auf 'InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_MULTI_LINE'. Wie wird der Text angezeigt, wenn Sie nicht mit 'InputType.TYPE_NULL', sondern mit dem anderen Eingabetyp beginnen? – 0X0nosugar

+0

Wenn ich 'InputType.TYPE_NULL' entferne, wird die Funktionalität gestört, obwohl der Text mehrzeilig wird. Nach dem Entfernen dieser Zeile kann der ediTextContent Werte übernehmen. Mein Ziel ist es, den Wert von editTextContent erst nach dem Klicken auf den Bearbeiten-Button zu übernehmen. –

Antwort

1

Okay, so wusste ich, dass das Problem entsteht, wenn ich auf die Schaltfläche Bearbeiten klicken. Durch Klicken auf den Button wurde der editText automatisch ausgekleidet, obwohl ich den InputType als Multiline in XML sehr deutlich erwähnt hatte.

Was ich getan habe, um die editText multi-line nach dem Klick auf die Schaltfläche zu machen, ist, dass ich editTextContent.setSingleLine(false); in meine Java-Datei innerhalb der onClick-Schaltfläche geschrieben habe. Und das ist es. :)

+0

Ja, sagt Site Ich muss 48 Stunden warten, um meine Antwort zu akzeptieren, ich werde in der Lage sein, die Marke in 6 Stunden zu überprüfen. Danke :) –

Verwandte Themen