- ConstraintLayout
- EditText
- WebView
- ์น์ฌ์ดํธ ๋ถ๋ฌ์ค๊ธฐ
- ์์ผ๋ก ๊ฐ๊ธฐ, ๋ค๋ก ๊ฐ๊ธฐ, ํ ๋ฒํผ
- ์น์ฌ์ด๋ ๋ก๋ฉ ํ์ธ
๊ฐ๋ฐ ๊ณผ์ (๋ ธ์ ์์ ํ์ธ)
ConstraintLayout
์ ์ถ๊ฐ๋ก ์ค์ ํด์ ์๋จ๋ฐ๋ฅผ ๋ง๋ค์๋ค. ์ดํ ์ข์ธก๋ถํฐ ํ, ์ฃผ์์ฐฝ, ๋ค๋ก ๊ฐ๊ธฐ, ์์ผ๋ก ๊ฐ๊ธฐ๋ฅผ ๋ฃ์ด์คฌ๋ค. ์ด๋ฒ์ ์ดํ์ ๋ง๋ค๋ฉด์ match_parent
์ 0dp
์ ์ฐจ์ด๊ฐ ํท๊ฐ๋ ค์ ๋ค์ ๊ณต๋ถํ๋๋ฐ 0dp๋ match_constraint
์ ๊ฐ์ ์๋ฏธ์ด๋ค.
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
tools:context=".MainActivity">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/toolBar"
android:layout_width="0dp"
android:layout_height="?attr/actionBarSize"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageButton
android:id="@+id/goHomeButton"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:src="@drawable/ic_home"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/addressBar"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:inputType="textUri"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@id/goHomeButton"
app:layout_constraintRight_toLeftOf="@+id/goBackButton"
app:layout_constraintTop_toTopOf="parent" />
<ImageButton
android:id="@+id/goForwardButton"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:src="@drawable/ic_forward"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageButton
android:id="@+id/goBackButton"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:src="@drawable/ic_back"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toLeftOf="@+id/goForwardButton"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<WebView
android:id="@+id/webView"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintTop_toBottomOf="@id/toolBar"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
๊ฐ ๋ฒํผ์ ๋ณด๋ฉด layout_height
์ 0dp๊ฐ ๊ฑธ๋ ค์๋ ๊ฒ์ ๋ณผ ์ ์๋๋ฐ match_constraint ์์ฑ์ ์ํด์ ๋์ด๊ฐ ๊ตฌํ์ด ๋๋ค.
์์ ์ฌ์ง์ ๋ณด๋ฉด ์ฑ์ ์คํํด๋ ์์ง webView Layout
์๋ ์๋ฌด๊ฒ๋ ๋จ์ง ์์ ๊ฒ์ ๋ณผ ์ ์๋ค. ์ฑ์ ์คํํ์ ๋ default๋ก [www.google.com](http://www.google.com)
์ด ์ ์๋๋๋ก ์ค์ ํ์๋ค.
private fun initView() {
webView.webViewClient = WebViewClient() // ์ธ๋ถ ์น๋ธ๋ผ์ฐ์ ธ๋ก ์ ํ๋๋ ๊ฒ์ ๋ง์
webView.settings.javaScriptEnabled = true // ์๋ฐ์คํฌ๋ฆฝํธ ์ฌ์ฉ์ ํ์ฉ
webView.loadUrl("https://www.google.com")
}
// webView ๊ฐ์ฒด๊ฐ ์ค์ฒฉ๋๋ฏ๋ก apply๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๋๊ฐ ์ข ๋ ์ด๋ป์ง๋ค.
private fun initView() {
webView.apply {
webViewClient = WebViewClient() // ์ธ๋ถ ์น๋ธ๋ผ์ฐ์ ธ๋ก ์ ํ๋๋ ๊ฒ์ ๋ง์
settings.javaScriptEnabled = true // ์๋ฐ์คํฌ๋ฆฝํธ ์ฌ์ฉ์ ํ์ฉ
loadUrl("https://www.google.com")
}
}
์ฑ์ ์คํํด์ ๊ตฌ๊ธ ์ฌ์ดํธ์ ์ ์ํ๋ฉด ์ธ๋ถ ๋ธ๋ผ์ฐ์ ธ๋ก ์ ํ๋๋ ๋ฒ๊ทธ?๊ฐ ๋ฐ์ํ๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์น๋ธ๋ผ์ฐ์ ธ๊ฐ ์ด ์ฑ์ ์๋ฏธํ๋๋ก webViewClient๋ฅผ ์ฌ์ค์ ํ๋ ๊ณผ์ ์ ๊ฑฐ์ณค๋ค. ๋ํ ์ด๋ ๊ฒ ๋ก๋๋ ๊ตฌ๊ธ ์ฌ์ดํธ์์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฌ์ฉ์ด ๋งํ์ ธ์๋ ๊ฒ์ ๋ณผ ์ ์๋ค. ์ข์ธก ์๋จ์ ํ๋ฒ๊ฑฐ ๋ฒํผ์ด๋ ๊ฐ์ข
๋ฒํผ์ด ์คํ์ด ์๋๋ ์ด์ ๊ฐ ๋ฐ๋ก ์ฌ๊ธฐ์๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด javaScriptEnabled
์์ฑ์ ํตํด ์๋ฐ์คํฌ๋ฆฝํธ ์ฌ์ฉ์ ํ๊ฐํด์คฌ๋ค.
default
๋ก ๊ตฌ๊ธ ์ฌ์ดํธ๊ฐ ์ ์๋๋ ๊ฒ์ ๊ตฌํํ๋ค. ๋ค์์ ์ฃผ์์ฐฝ์ url์ ์
๋ ฅํ์ ๋ ํด๋น ์ฌ์ดํธ๋ก ์ด๋๋๋ ๊ฒ์ ๊ตฌํํ๋ ค๊ณ ํ๋ค. ์ด ๋ setOnEditorActionListener
๋ฅผ ์ฌ์ฉํ๋ค. setOnClickListener
์ ๋์ผํ๋ค.
<EditText
android:id="@+id/addressBar"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:imeOptions="actionDone"
android:inputType="textUri"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@id/goHomeButton"
app:layout_constraintRight_toLeftOf="@+id/goBackButton"
app:layout_constraintTop_toTopOf="parent" />
EditText
์ต์
์ ๋ฃ์ด์ค imeOptions
์์ฑ์ ์ด์ฉํ๋ค. ์ด๋ EditText๋ก ๋์ด์ง ํค๋ณด๋์ ์์ฑ์ ์ค๋ค.
์ฐ์ธก ํ๋จ์ ์๋ฃ ๋ฒํผ์ด action_done
์์ฑ์ด๋ค. ์๋ฃ๋ฒํผ์ด ๋๋ฆฌ๋ฉด Listener
๊ฐ ํธ์ถ๋๊ณ action_id๋ฅผ ๋น๊ตํ๋ค. id๊ฐ action_done์ธ ๊ฒฝ์ฐ์ ์ฃผ์์ฐฝ์ ๋ฃ์ด์ค text๋ฅผ loadํ๊ฒ ๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ false๋ฅผ ๋ฆฌํดํ๋ค. ํ์ง๋ง ์ด๋ ๊ฒ ๊ตฌํํด๋ [naver.com](http://naver.com)
์ ๊ฐ์ด ๋ถ์์ ํ ์ํ์ url์ธ ๊ฒฝ์ฐ์ ์ ์์ด ๋์ง ์๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Manifest
์ usesCleartextTraffic
์ด๋ผ๋์์ฑ์ ์ค์ ์์ฒด์ ์ผ๋ก [https://www](https://www)
๋ฅผ ๋ถ์ฌ์ฃผ๋๋ก ๊ตฌํํ๋ค.
home, back, forward ๋ฒํผ์ ๋์์ ์ถ๊ฐํ๋ค. ๋งค์ฐ ๊ฐ๋จํ๋ค. webView ํด๋์ค์์ ๋ฉ์๋๊ฐ ๋ค ๊ตฌํ์ด ๋์ด ์์ด์ ์ด๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
private fun bindViews() {
addressBar.setOnEditorActionListener { v, actionId, event ->
if (actionId == EditorInfo.IME_ACTION_DONE) {
webView.loadUrl(v.text.toString())
}
return@setOnEditorActionListener false
}
goBackButton.setOnClickListener {
webView.goBack()
}
goForwardButton.setOnClickListener {
webView.goForward()
}
goHomeButton.setOnClickListener {
webView.loadUrl(DEFAULT_URL)
}
}
ํ์ง๋ง ์ถ๊ฐํด์ค ๊ฒ์ด ์๋๋ฐ ์ฐ๋ฆฌ๊ฐ ์น ๋ธ๋ผ์ฐ์ ธ ์ดํ์ ์ฌ์ฉํ๋ค๋ณด๋ฉด ์๋๋ก์ด๋ ์์ฒด UI์ ๋ค๋ก ๊ฐ๊ธฐ ๋ฒํผ์ ๋๋ฅด๋๋ผ๋ ์ด์ ํ์ด์ง๋ก ์ด๋ํ๋ค๋ ๊ฒ์ ์ ๊ฒ์ด๋ค. ํ์ง๋ง ์ง๊ธ ์ฐ๋ฆฌ๊ฐ ๊ตฌํํ ์ดํ์ ๋ค๋ก ๊ฐ๊ธฐ ๋ฒํผ์ ๋๋ฅด๋ฉด ๋ฐ๋ก ์ฑ์ด ์ข
๋ฃํ๋๋ฐ ์ด๋ฅผ ํด๊ฒฐํด์ผ ํ๋ค. ์ด๋ฅผ ์ํด onBackPressed
๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ ํด์คฌ๋ค.
// ํ๋จ๋ฐ์ ๋ค๋ก๊ฐ๊ธฐ ๋ฒํผ์ ๋๋ฅด๋๋ผ๋ ์ฑ์ด ์ข
๋ฃ๋์ง ์๊ธฐ ์ํด
override fun onBackPressed() {
if (webView.canGoBack()) {
webView.goBack()
} else {
super.onBackPressed() // ํ๋จ๋ฐ์ ๋ค๋ก๊ฐ๊ธฐ ๋ฒํผ ํด๋ฆญ์ ์ข
๋ฃ๋๋ ๋ฉ์๋
}
}
๊ธฐ๋ณธ์ ์ผ๋ก super.onBackPressed
๊ฐ ๋ค๋ก๊ฐ๊ธฐ ๋ฒํผ ํด๋ฆญ์ ์ฑ์ด ์ข
๋ฃ๋๋ ๋ฉ์๋์ด๋ค. ๋ฐ๋ผ์ webView๊ฐ ์ด์ ํ์ด์ง๊ฐ ์๋ ๊ฒฝ์ฐ goBack
๋ฉ์๋๋ฅผ ํตํด ์ด์ ํ์ด์ง๋ก ์ด๋ํ๊ณ ๊ทธ๋ ์ง ๋ชปํ ๊ฒฝ์ฐ์๋ง ์ฑ์ ์ข
๋ฃํ๋๋ก ๊ตฌํํ๋ค.
์ฐ์ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฅ์ ๊ตฌํ์ด ์๋ฃ๋๋ค. ํ์ง๋ง ์์ง ๋ญ๊ฐ ๋ถ์กฑํ๋ค. UI๊ฐ ์ด์์ง ์์ ๊ฒ์ ๋ณผ ์ ์๋๋ฐ ์ด๋ฅผ ์์ ํด๋ณด๋ ค๊ณ ํ๋ค.
ํ์ฌ ์๋จ๋ฐ์ ์กด์ฌํ๋ 3๊ฐ์ ๋ฒํผ์ ๋ณด๋ฉด ๋ค์ ํ์ ๋ฐฐ๊ฒฝ์ด ๋ค์ด๊ฐ ๊ฒ์ ๋ณผ ์ ์๋ค. ์ด๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ํด ?attr/selectableItemBackground
์์ฑ์ ํตํด drawable ์ด๋ฏธ์ง ๊ณ ์ ์ ๋ฐฐ๊ฒฝ์ ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์๋ค.
<ImageButton
android:id="@+id/goHomeButton"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="?attr/selectableItemBackground"
android:src="@drawable/ic_home"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
ํ์ง๋ง ์ด๋ ๊ฒ ๊ตฌํํ๋ฉด ๊ธฐ์กด์ layout_width๊ฐ match_content์ ์์ฑ์ ๊ฐ์ง๊ณ ์์๋๋ฐ 0dp๋ก ๋ณ๊ฒฝ๋๋ฉด์ UI์์ ์ฌ๋ผ์ง๊ฒ ๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด constraintDimenstionRatio
์์ฑ์ผ๋ก ๊ฐ๋ก ์ธ๋ก 1:1์ ๋น์จ์ ๊ฐ์ง๋๋ก ์์ ํ๋ค.
์๋จ ์ฃผ์์ฐฝ ์ญ์ ๋ญ๊ฐ ๋ฐ๋ฐํ๋ค. drawable ์ด๋ฏธ์ง๋ฅผ ์ถ๊ฐํด์ ์ด๋ฅผ ๊พธ๋ฉฐ์คฌ๋ค.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/light_gray" />
<corners android:radius="16dp" />
</shape>
์๋จ๋ฐ๊ฐ ์ ๋ณด๋ค ํ์คํ ์ด๋ป์ก๋ค.
๊ทผ๋ฐ ๋ญ๊ฐ ์์ง๋ ๋ถ์กฑํ๋ค. ์๊ฐํด๋ณด๋ ํ๋ฉด์ reload
ํด์ฃผ๋ ๊ธฐ๋ฅ์ด ์์๋ค. ํ๋ฉด์ reload
ํ๊ธฐ ์ํด์ ์ฐ์ dependencies
์ ์ถ๊ฐ๋ฅผ ํด์ค์ผํ๋ค.
dependencies {
implementation 'androidx.core:core-ktx:1.6.0'
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.0'
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}
swiperrefreshlayout
๊ฐ ์ถ๊ฐ๋ ๊ฒ์ ๋ณผ ์ ์๋ค. ๋ค์ activity_main.xml
๋ก ๋์ด์์ reload
๊ฐ ํ์ํ ๋ ์ด์์์ธ webView
์์ญ์ swiperrefreshlayout
์ผ๋ก ๊ฐ์ธ์ฃผ๋ฉด ๋์ด๋ค.
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/refreshLayout"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/toolBar">
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
ํด๋น ๋ ์ด์์๊ณผ ์ฐ๊ฒฐํด์ฃผ๋ ํ๋กํผํฐ๋ฅผ ์ ์ธํ๊ณ ๋ฆฌ๋ก๋๊ฐ ํธ์ถ๋๋ฉด reload
๋ฉ์๋๋ฅผ ์คํํ๋๋ก ๊ตฌํํ๋ค. ํ์ง๋ง... reload bar
๊ฐ ์ฌ๋ผ์ง์ง ์๋๋ค.
inner class WebViewClient : android.webkit.WebViewClient() {
override fun onPageFinished(view: WebView?, url: String?) {
super.onPageFinished(view, url)
refreshLayout.isRefreshing = false
}
}
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Inner class
๋ก WebViewClient
๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉ ํด์คฌ๋ค. ํ์ด์ง ๋ก๋๊ฐ ๋๋๋ฉด isRefreshing
์ ์ข
๋ฃํ๋๋ก ๊ตฌํํ๋ค.
ํ์ด์ง ๋ก๋๊ฐ ์๋ฃ๋๋ฉด refresh
๊ฐ ์ฌ๋ผ์ง๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
์ ์ฒด์ ์ธ UI๋ ์์ ํ์ง๋ง ์์ง๋ ๋ญ๊ฐ ๋ถ์กฑํ ๋๋์ด๋ค. ์ฌ์ฉ์๊ฐ ํน์ ์นํ์ด์ง๋ฅผ ๋ฐฉ๋ฌธํ ๋ ํ์ด์ง๊ฐ ๋ก๋๋๊ณ ์๋์ง๋ฅผ ์๋ ค์ฃผ๋ progressBar
๋ฅผ ์ถ๊ฐํ๋ ค๊ณ ํ๋ค.
<androidx.core.widget.ContentLoadingProgressBar
android:id="@+id/progressBar"
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
android:layout_width="0dp"
android:layout_height="2dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/toolBar" />
activity_main.xml
์ ProgressBar๋ฅผ ์ถ๊ฐํ๊ณ style์ ์ง์ ํด์ค๋ค. ์ํ์ผ๋ก ํ์ํ๋ progressBar์ด๋ฏ๋ก horizontal ์์ฑ์ ์ค๋ค. ์ฐ์ ํ์ด์ง ๋ก๋ฉ์ ํ์ํ ๋ ์ด์์์ ๊ตฌํํ๋๋ฐ ์๋์ ์ด๋ป๊ฒ ํ ๊น? ์ด ๋ WebChromeClient
๋ฅผ ์ฌ์ฉํ๋ค. ์์์๋ WebClient
, ์ฌ๊ธฐ์๋ WebChromeClient ๋์ ์ฐจ์ด๋ ๋ฌด์์ผ๊น? WebChromeClient์ ๋ธ๋ผ์ฐ์ ๊ด์ ์์ ์๋ฐ์คํฌ๋ฆฝํธ ํธ์ถ ๋ฑ ์ข ๋ ๋ณต์กํ ์ผ์ ํ ์ ์๊ณ , WebClient๋ ๋จ์ํ ์ฝํ
์ธ ๋ฅผ ๋ณด์ฌ์ฃผ๋? ๊ทธ๋ฐ ๋๋์ด๋ค.
private val progressBar: ContentLoadingProgressBar by lazy {
findViewById(R.id.progressBar)
}
// ... ์ค๋ต
inner class WebViewClient : android.webkit.WebViewClient() {
override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
super.onPageStarted(view, url, favicon)
progressBar.show()
}
override fun onPageFinished(view: WebView?, url: String?) {
super.onPageFinished(view, url)
refreshLayout.isRefreshing = false
progressBar.hide()
goForwardButton.isEnabled = webView.canGoForward()
goBackButton.isEnabled = webView.canGoBack()
addressBar.setText(url)
}
}
inner class WebChromeClient : android.webkit.WebChromeClient() {
override fun onProgressChanged(view: WebView?, newProgress: Int) {
super.onProgressChanged(view, newProgress)
progressBar.progress = newProgress
}
}
์ญ์ ์ค๋ฒ๋ผ์ด๋ฉ์ ํตํด progressBar
๋ฅผ ์
๋ฐ์ดํธ ํด์ฃผ๋ ๋ฐฉ์์ ๊ตฌํํ๋ค. ๋ํ WebViewClient์์ ๋ฉ์๋๋ฅผ ์ถ๊ฐํด์คฌ๋๋ฐ ํ์ด์ง๊ฐ ๋ก๋ฉ๋๊ธฐ ์์ํ ๋ ํธ์ถ๋๋ onPageStarted
์ show
๋ฉ์๋๋ฅผ ์ถ๊ฐํ๊ณ , ํ์ด์ง ๋ก๋๊ฐ ์ข
๋ฃ๋๋ฉด ํธ์ถ๋๋ onPageFinished
์ hide
๋ฉ์๋๋ฅผ ์ถ๊ฐํ๋ค. ๋ํ ๊ฐ Button์ isEnable
์ ํตํด ์ด์ ํ์ด์ง๊ฐ ์๋ ๊ฒฝ์ฐ ๋ค๋ก ๊ฐ๊ธฐ ๋ฒํผ์ด ๋๋ฆฌ์ง ์๊ฒ, ๋ค์ ํ์ด์ง๊ฐ ์๋ ๊ฒฝ์ฐ ์์ผ๋ก ๊ฐ๊ธฐ ๋ฒํผ์ด ๋๋ฆฌ์ง ์๊ฒ ๊ตฌํํ๋ค. ๋ํ ์์ ํ url๋ก ๋ฐ๋๋๋ก ๊ตฌํํ๋ค.
progressBar๊ฐ ์ถ๊ฐ๋ ๊ฒ์ ๋ณผ ์ ์๋ค. ๊ทผ๋ฐ ์๋จ๋ฐ๊ฐ ๊ฑฐ์ฌ๋ฆฐ๋ค.
NoActionBar
๋ก ๋ณ๊ฒฝํด์ ์๋จ์ ActionBar๋ฅผ ์ ๊ฑฐํด์คฌ๋ค. ๋๋ฆ ๊ด์ฐฎ์ ์น๋ธ๋ผ์ฐ์ ์ฑ์ ๋ง๋ค์๋ค.