• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    미해결

모바일화면에 키보드가 사라지지 않아

23.10.12 08:41 작성 조회수 139

0

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            val navController = rememberNavController()         // Composable 의 backstack 추적 & 각 Screen 들의 state을 관리함
            NavHost(                                            // navigation grpah 를 생성
                navController = navController,
                startDestination = "first"
            ) {
                composable(route = "first") {   FirstScreen(navController) }
                composable(route = "second") {  SecondScreen(navController) }
                composable(route = "third/{value}") { backStackEntry ->
                    ThirdScreen(
                        navController,
                        value =  backStackEntry.arguments?.getString("value") ?: "",
                    )
                }
            }
        }
    }
}

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun FirstScreen(navController: NavController) {
    val(value, setValue) = remember {
        mutableStateOf("")
    }
    Column(
        modifier = Modifier.fillMaxSize(),
        verticalArrangement = Arrangement.Center,
        horizontalAlignment = Alignment.CenterHorizontally
    ) {
        Text("첫화면")
        Spacer(modifier = Modifier.height(16.dp))
        Button(onClick = {
            navController.navigate("second")
        }) {
            Text("두번째화면으로")
        }
        Spacer(modifier = Modifier.height(16.dp))
        TextField(value=value, onValueChange = setValue)
        Button(onClick = {
            if(value.isNotEmpty()) {
                navController.navigate("third/$value")
            }
        }) {
            Text("세번째화면으로")
        }
    }
}

@Composable
fun SecondScreen(navController: NavController) {
    Column(
        modifier = Modifier.fillMaxSize(),
        verticalArrangement = Arrangement.Center,
        horizontalAlignment = Alignment.CenterHorizontally
    ) {
        Text("두번째화면")
        Spacer(modifier = Modifier.height(16.dp))
        Button(onClick = {
            navController.navigateUp()                          // navController.popBackStack() 도 가능함
        }) {
            Text("뒤로가기")
        }
    }
}

@Composable
fun ThirdScreen(navController: NavController, value:String) {
    Column(
        modifier = Modifier.fillMaxSize(),
        verticalArrangement = Arrangement.Center,
        horizontalAlignment = Alignment.CenterHorizontally
    ) {
        Text("세번째화면")
        Spacer(modifier = Modifier.height(16.dp))
        Text(value)
        Button(onClick = {
            navController.navigateUp()
        }) {
            Text("뒤로가기")
        }
    }
}

위 코드실행 후

란에 문자열입력하면 모바일화면에 키보드가 사라지지 않아

세번째화면 버튼이 안보여 누를 수 없는데

실력이 초보라 어찌할 바를 보르겠네요 *.^

답변 1

답변을 작성해보세요.

0

에뮬레이터가 충분히 길지 않아서 버튼이 가리시는 것 같네요.

뒤로가기 버튼 한번 누르면 키보드 내려갈 겁니다.