2017-08-19 63 views
0

我正在製作一個用於存儲筆記的Android應用程序。在點擊按鈕之前,我使editText的行爲與textView類似。點擊編輯按鈕可以使editText獲得價值。現在問題出現時,我保存該值,當它顯示。 EditText不會像我想的那樣進入多行,而是排成一行。無法制作EditText多行

我將editText的inputType屬性聲明爲xml文件中的多行,但是在初始化editText時的代碼中,我將它的inputType屬性設置爲null,以嘗試使其成爲null和多行但可嘆!它不會發生。

下面是我的XML和Java代碼:

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

鏈接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

我向你保證,它不是:/ 我試過這個解決方案,它不適用於我的案例 –

+0

如果你遇到了editTextContent問題:你可以在onCreate中將inputType設置爲「InputType.TYPE_NULL」( ),稍後將其設置爲「InputType.TYPE_CLASS_TEXT |」 InputType.TYPE_TEXT_FLAG_MULTI_LINE'。如果您不是以「InputType.TYPE_NULL」開頭,而是使用其他輸入類型,那麼文本如何顯示? – 0X0nosugar

+0

如果我刪除了'InputType.TYPE_NULL',雖然文本變成多行,但功能會中斷。 刪除此行後,ediTextContent已準備好接受值。我的目標是隻有當我點擊編輯按鈕後才能使editTextContent取值。 –

回答

1

好了,所以,我知道,當我點擊編輯按鈕,問題就出現了。即使我已經非常清楚地提到了XML中的多行輸入類型,單擊該按鈕會使editText單行內容自動排列。

我在點擊按鈕之後做了editText多行的操作是我在onClick按鈕代碼中的java文件中寫了editTextContent.setSingleLine(false);。 就是這樣。 :)

+0

是的,網站說我必須等48小時才能接受我的回答,我可以在6個小時內「檢查」商標。 謝謝:) –