我不知道爲什麼你可能想要多行沒有滾動條,但如果這是你所需要的,我認爲這可能是一個可能的解決方案。
很明顯,您需要在佈局上完成一些邏輯,因爲我無法想象一個視圖能夠爲您提供此服務而無需對其進行調整。
所以,我想用5個TextViews的一個RelativeLayout(textViews的數量取決於你想要顯示多少行)。
因此,每個TextView中也會包含您的一條線路,這樣,當用戶添加新行,你不得不做的東西沿着這些路線:
if(linesInView == 5)
shiftText();
addText();
這樣shiftText()
將負責通過一個循環並將一個textView的文本設置爲另一個(移動它們),以便爲新文本騰出空間。
然後addText()
只會將由用戶創建的新文本添加到由於shiftText()
而生成的已釋放點上。
總而言之,您可以遵循這些指導原則。請記住,我剛剛將這些代碼寫在了我的頭頂,我目前沒有辦法檢查它的正確性。此外,這是第一次嘗試,有改進的空間:
private static int MAX_NUM_LINES = 5;
private int linesShown = 0;
private ArrayList<TextView> views = new ArrayList<>();
private EditText userInput;
public void onCreate(...){
....
views.add((TextView)findViewById(R.id.firstline);
views.add((TextView)findViewById(R.id.secondline);
views.add((TextView)findViewById(R.id.thirdline);
views.add((TextView)findViewById(R.id.fourthline);
views.add((TextView)findViewById(R.id.fifthline);
this.userInput = (EditText) findViewById(R.id.input);
//I suggest these in order to avoid calling "findViewById()" everytime the user
// adds a new sentences, which I gather will happen often
}
public void someEventCalledWhenUserAddsNewLine(View view){
if(this.linesShown>=MAX_NUM_LINES)
shiftText();
addNewLine();
}
private void shiftText(){
//Shift your text by looping through your this.views
for(pos=0; pos<this.views.size()-1; ++pos){
String nextLine = this.views.get(pos+1).getText();
this.views.get(pos).setText(nextLine);
}
//You need to set the condition to this.views.size()-1 because
//when you reach position 4 (your last TextView) you have to sop
// since there is not text to shift to that one
this.views.get(this.views.size()-1).setText(null);
//Make sure you set the text of the last TextView to null so that
// addLine() will be able to find the first available TextView
}
private void addNewLine(){
//Add text from this.userInput to the first available TextView in this.views
int pos;
for(pos=0; pos<this.views.size(); ++pos){
if(this.views.get(pos).getText()==null){
//We have found the first available TextView
break;
}
}
this.views.get(pos).setText(this.userInput.getText());
//Pos holds the position of the first available TextView, now we have
// added the new line
this.linesShown++;
}
頂的蝙蝠改進是隻跟蹤第一個可用的TextView的指數的,所以你不必亂用迴路在addLine()
正在尋找它。
好心解釋爲什麼downvoted。 – Riskhan
我認爲這可能是因爲解釋不夠清楚。我仍然無法確定你需要什麼。你可能想重新修改一下。 – Chayemor
@Joy請參閱編輯的問題。 – Riskhan