預設 EditText 設定 android:gravity="center" 會導致多行文字垂直置中,游標閃爍於輸入區中央,違背直覺。需結合 gravity、inputType 正確設定以實現「左上對齊、游標從首行首字開始」。
<EditText
android:id="@+id/multiLineEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="120dp"
android:gravity="top|start"
android:inputType="textMultiLine"
android:lines="5"
android:scrollHorizontally="false"
android:padding="12dp"
android:background="@drawable/edittext_bg" />
| 屬性 | 作用 | 關鍵值 |
|---|---|---|
| gravity | 文字區塊在元件內的對齊 | top|start (或 top|left) |
| inputType | 啟用多行輸入模式 | textMultiLine |
| lines / minLines | 預設顯示行數 / 最小行數 | 視設計而定 |
| scrollHorizontally | 禁止水平捲動,強制換行 | false |
EditText et = findViewById(R.id.multiLineEditText);
et.setGravity(Gravity.TOP | Gravity.START);
et.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_MULTI_LINE);
et.setMinLines(5);
et.setHorizontallyScrolling(false);
singleLine="false" 已棄用,請改用 inputType="textMultiLine"。gravity="center" 僅影響文字區塊對齊,不影響游標初始位置;游標位置由 top|start 決定。minHeight 而非 layout_height,保留內容超出時可捲動彈性。掌握屬性組合邏輯,即能輕鬆打造符合使用者直覺的多行輸入體驗。