※ 저는 안드로이드 프로그래밍 정복(김상형 著, 한빛미디어) 책을 이용해 공부하고 있으며
예제와 코드는 이 책을 통해 공부중임을 밝힙니다.
개인적인 공부를 하면서 정리한 형식이기 때문에 심각한 오류가 있을 수 있습니다. 피드백 주시면 정말 감사하겠습니다.
※ 안드로이드 프로그래밍 정복(191p~196p) 참조
위젯을 실행중에(동적일 떄) 사용자의 입력이나 출력할 정보의 양에 따라 필요한 위젯의 종류가 개수가 달라지는 경우
실행중에 속성을 바꿔줘야 할 필요가 있다.
속성값을 변경 : 속성 이름 앞에 set을 붙이고, 속성의 첫자를 대문자로 시작하는 것이 관례
속성값을 읽기 : 속성 이름 앞에 get을 붙이고, 속성의 첫자를 대문자로 시작하는 것이 관례
EX) void TextView.setGravity (int gravity)
void setText (CharSequence text)
void setTextColor (int color)
void setTextSize (float size)
몰랐지만, R.java 파일을 열어보면 우리가 "+@id/mylinear", "+@id/mybutton" 이런 식으로
id 속성을 .xml 파일에 지정해줄 때마다, R.java에 정의한 ID를 "상수"로 정의한다.
R클래스는 코드를 전혀 갖지 않고, 리소스에서 정의한 ID를 상수로 정의만 한다.
그래서 우리가 항상 .java에서 항상 R.layout.~~~~.을 볼 수 있었던 것이다.
코드에서 참조하려면 R.타입.ID를 사용한다.
정리해보자면, R.layout.activity_exercise가 "참조"하는 레이아웃 문서 activity_exercise.xml을 "읽어서" 문서의 내용대로
레이아웃을 만들어 액티비티에 채우는 것이다.
그래서 이러한 실행 결과를 얻을 수 있던 것이다.
다시, 돌아가서 코드를 좀 수정해보자.
setOrientation을 통해서 vertical(수직) -> horizontal(수평)으로 바꿨으니 수평으로 나란히 배치되고
이외에 set을 통해서 TextSize와 BackgroundColor를 변경했다.
<주의점>
① XML 문서에서는 수치값 지정시 px, dip, in을 사용할 수 있지만
.java 코드에서는 무조건 픽셀(px) 단위이다. 따라서 별도의 메서드를 통해서 픽셀로 변환하는 작업이 필요하다.
② 색상 : XML에서는 기본값이 0xff이지만 .java 코드에서는 0이다.
ex) 초록색 ( .xml #00ff00 ) ( .java 0xff00ff00)
<.xml>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mylinear"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<Button
android:id="@+id/mybutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="버튼"/>
<TextView
android:id="@+id/mytext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="문자열"/>
<EditText
android:id="@+id/myedit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="에디트"/>
</LinearLayout>
<.java>
package lkcompany.exercise;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
public class Exercise extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_exercise);
LinearLayout MyLinear=(LinearLayout)findViewById(R.id.mylinear);
MyLinear.setOrientation(LinearLayout.HORIZONTAL);
Button MyBtn = (Button)findViewById(R.id.mybutton);
MyBtn.setTextSize(40);
EditText MyEdit = (EditText)findViewById(R.id.myedit);
MyEdit.setBackgroundColor(0xff00ff00);
}
}
'프로그래밍 > 안드로이드' 카테고리의 다른 글
[안드로이드] 레이아웃 전개(Layout Inflation) (2) | 2016.07.10 |
---|---|
[안드로이드 실행오류] cannot find symbol class "~~~" (0) | 2016.07.09 |
[안드로이드] 레이아웃 중첩 (0) | 2016.07.08 |
[안드로이드] 기타 레이아웃(Absolute, Frame, Table) (0) | 2016.07.08 |
[안드로이드] 이미지뷰(imageView)와 렐러티브 레이아웃(Relative Layout) (0) | 2016.07.08 |