我有一個 BasicTextField,我希望它在螢屏打開并且鍵盤在所有情況下都關閉而不打開時默認聚焦。
我怎樣才能做到這一點?
uj5u.com熱心網友回復:
一種方法是......您可以android:windowSoftInputMode="stateAlwaysHidden在清單中為該活動指定
優點:
- 它在某種程度上完成了這項作業,但沒有太多
code
缺點:
- 如果用戶快速按下編輯文本,您可以看到某些幀的鍵盤。這可能會讓用戶發瘋
- 如果您有其他可在同一活動中編輯的編輯文本,則需要手動檢查焦點事件并以編程方式設定
提示:如果您打算只允許用戶粘貼如何從剪貼板服務讀取資料并默認顯示它,并進行一些 UI 更改以向用戶提供選擇是否使用該值...
uj5u.com熱心網友回復:
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Ui()
}
}
}
@Composable
fun Ui() {
MyApplicationTheme {
// A surface container using the 'background' color from the theme
Surface(color = MaterialTheme.colors.background) {
Greeting()
}
}
}
@Composable
fun Greeting() {
var value by remember {
mutableStateOf("")
}
val localFocusManager = LocalFocusManager.current
val localSoftwareKeyboardController = LocalSoftwareKeyboardController.current
val focusRequester = remember { FocusRequester() }
TextField(
modifier = Modifier
.focusRequester(focusRequester)
.onFocusChanged { if(it.isFocused) localSoftwareKeyboardController?.hide() }
.focusable(),
value = value,
onValueChange = { value = it },
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = { localFocusManager.clearFocus() })
)
}
@Preview(showBackground = true)
@Composable
fun DefaultPreview() {
Ui()
}
就像上面的代碼一樣,獲取當前焦點并清除它。或者您也可以像 focusManager 一樣使用LocalSoftwareKeyboardController隱藏鍵盤。
val localSoftwareKeyboardController = LocalSoftwareKeyboardController.current
....
keyboardActions = KeyboardActions(onDone = { localSoftwareKeyboardController?.hide() })
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/405217.html
標籤:
上一篇:如何在某個點停止滑動?
下一篇:Google應用引擎部署失敗-查找“pip”的模塊規范時出錯(AttributeError:模塊“__main__”沒有屬性“__file__”)
