layout
ConstraintLayout : 강제적으로 위치를 지정, 원하는 위치에 배치 가능
LinearLayout : 가로나 세로방향으로 일열로 나열, 중첩되지 않고 자동 나열
RelativeLayout : 특정 뷰나 부모의 위치에 맞춰 배치
FrameLayout : 액자처럼 안쪽으로 뷰를 배치
TableLayout : 뷰를 테이블 형태로 나열
<TableRow> : 행을 추가
<TableColumn> : 열을 추가
android:orientation = "vertical" : 세로 정렬
기본 설정
* 텍스트 상자
<TextView
android:id="@+id/Text" // id
android:text="텍스트창" // 출력 문구
android:layout_width="match_content" // 텍스트 상자 넓이
android:layout_height="wrap_content"/> // 텍스트 상자 높이
match_content : 부모화면 기준으로 채우기
wrap_content : 포함한 내용을 전부 보여줄 크기로 설정
viewBinding
xml의 뷰와 변수를 연결해주는 기능
findViewById를 이용할 경우 개별적으로 id와 타입을 적어주어야하나 viewBinding에서는 하지 않아도 됨
build.gradel 추가
android{
...
buildFeatures{
viewBinding true
}
}
MainActivity
val binding by lazy { ActivityMainBinding.inflate(layoutInflater) }
// binding 변수
// lazy : initialize 나중에 실행 > activity_main.xml(resource)을 먼저 객체화 시킨 후 실행
// inflate
// override fun onCreate(savedInstanceState: Bundle?){
...
setContentView(binding.root) // onCreate들어와서 초기화
// btnSay: Button id, Text: textView id
binding.btnSay.setOnClickListener {
Log.i(ContentValues.TAG, "btnSay 클릭했습니다")
println("btnSay 클릭했습니다")
binding.textSay.setText("Hello Android!!")
}
}
findViewById
xml의 뷰와 변수를 연결해주는 기능
override fun onCreate(savedInstanceState: Bundle?) {
...
// layout폴더 안 activity_main에 접근
setContentView(R.layout.activity_main)
// textSay == 객체(변수)
val textSay = findViewById<TextView>(R.id.textSay)
val btnSay = findViewById<Button>(R.id.btnSay)
btnsay.setOnClickListner{
textSay.text = "Android World"
}
}
Toast - 안드로이드 화면에 메세지 팝업
val toast = Toast.makeText(this.applicationContext, "버튼 클릭!", Toast.LENGTH_SHORT)
toast.show()
ImageView
<ImageView
// 이미지뷰에 가져올 이미지 주소
app:srcCompat="@drawable/image" />
Button
activity_main
<Button
android:id="@+id/btn"
android:text="버튼"
android:layout_width="70dp"
android:layout_height="50dp"
// onClickListner 사용하기 위해 작성
android:onClick="onClick"/>
MainActivity
// button onClickLister
class MainActivity: AppCompatActivity(), View.OnClickListner{
...
override fun OnClick(view, View?){
val toast = Toast.makeText(this.applicationContext, "버튼 클릭!", Toast.LENGTH_SHORT)
toast.show()
// 버튼 클릭으로 이미지 노출/비노출
when(view?.id){
R.id.btn->{
var image = findViewById<ImageView>(R.id.image)
image.visibility = if(image.visibility == view.VISIBLE){
View.INVISIBLE // 버튼 클릭으로 이미지 비노출
}else{
View.VISIBLE // 이미지 노출
}
}
}
}
}
inflate
Action bar
//ActionBar
res/menu/menu_main.xml 생성
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menu_search"
android:icon="@android:drawable/ic_menu_search"
android:title="검색"
app:showAsAction="always|withText" />
<item
android:id="@+id/menu_chat"
android:icon="@android:drawable/sym_action_chat"
android:title="채팅"
app:showAsAction="always" />
<item
android:id="@+id/menu_email"
android:icon="@android:drawable/sym_action_email"
android:title="이메일"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_setting"
android:title="세팅"
app:showAsAction="never" />
</menu>
MainActivity.kt
class MainActivity : AppCompatActivity() {
...
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
// 매개변수
menuInflater.inflate(R.menu.menu_main, menu)
return super.onCreateOptionsMenu(menu)
//return false
}
'안드로이드' 카테고리의 다른 글
[Android] Button (0) | 2022.03.23 |
---|---|
[Android] Intent (0) | 2022.03.22 |
[Android] Fragment (0) | 2022.03.22 |
[Android] RecylerView (0) | 2022.03.21 |
[Android] 2 (0) | 2022.02.20 |
댓글