검색결과 리스트
Android에 해당되는 글 61건
- 2011.12.21 [Android] ProgressBar
- 2011.12.21 [Android] Gallery
- 2011.12.20 [Android] GridView
- 2011.12.20 [Android] Spinner
- 2011.12.20 [Android] AdapterView - 3
- 2011.12.19 [Android] AdapterView - 2
- 2011.12.19 [Android] AdapterView - 1
- 2011.12.19 [Android] TextView
- 2011.12.16 [Android] 대체 Resource
- 2011.12.16 [Android] Style&Theme
글
프로그레스는 진행 상태를 나타 내 준다.
안드로이드에서는 우리가 알고 있는 막대 형태의 프로그레스와 원형의 프로그레스 두가지가 있다.
막대 형태의 프로그레스를 쓰고 싶으면 style="?android:attr/ProgressBarStyleHorizontal" 처리를 하면 나타나고
원형을 하고 싶다면 XML에서 그 내용을 기입 할 필요가 없다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ProgressBar
android:id="@+id/prg1"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:max="100"
android:progress="10"
android:secondaryProgress="50"
/>
<ProgressBar
android:id="@+id/prg2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="invisible"
/>
<Button
android:id="@+id/defirst"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="defirst"
/>
<Button
android:id="@+id/infirst"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="infirst"
/>
<Button
android:id="@+id/desecond"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="desecond"
/>
<Button
android:id="@+id/insecond"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="insecond"
/>
<Button
android:id="@+id/start"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="start"
/>
<Button
android:id="@+id/stop"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="stop"
/>
</LinearLayout>
다음은 프로그레스바와 관련된 메서드에 대한 설명이다.
메서드 | 설명 |
setProgress(int value) | 프로그레스 값 설정 |
setSecondaryProgress(int value) | 두번째 프로그레스 값 설정 |
incrementProgressBy(int value) | 프로그레스 값 증가 |
incrementSecondaryProgressBy(int value) | 두번째 프로그레스 값 증가 |
여기서 첫번째 두번째 프로그레스라고 명시한 것은 동영상 버퍼링 중 재생 할 떄 뒷 색깔과 앞 색깔이 다른 것을 본 적이 있을 것이다. 그것을 말하는 것이다.
public class ImageViewActivity extends Activity{
ProgressBar _prg1;
ProgressBar _prg2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
_prg1 = (ProgressBar)findViewById(R.id.prg1);
_prg2 = (ProgressBar)findViewById(R.id.prg2);
findViewById(R.id.defirst).setOnClickListener(listener);
findViewById(R.id.infirst).setOnClickListener(listener);
findViewById(R.id.desecond).setOnClickListener(listener);
findViewById(R.id.insecond).setOnClickListener(listener);
findViewById(R.id.start).setOnClickListener(listener);
findViewById(R.id.stop).setOnClickListener(listener);
}
Button.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.defirst :
_prg1.incrementProgressBy(-2);
break;
case R.id.infirst :
_prg1.incrementProgressBy(2);
break;
case R.id.desecond:
_prg1.incrementSecondaryProgressBy(-2);
break;
case R.id.insecond:
_prg1.incrementSecondaryProgressBy(2);
break;
case R.id.start:
_prg2.setVisibility(View.VISIBLE);
break;
case R.id.stop:
_prg2.setVisibility(View.INVISIBLE);
break;
}
}
};
}
이 자바 코드를 넣고 실행을 해 보면 각기 메서드들에 대해서 확인이 가능 할 것이다.
단 원형 프로그레스는 값을 변경 하는 것이 아니라 대기 상황에 따라 보여주거나 사라지게 해야한다.
이러한 것은 쓰레드에서 이용하면 적합하다고 사료된다.
설정
트랙백
댓글
글
캘러리는 수평으로 스크롤이 되는 어댑터 뷰로 중안에는 선택 항목으로 보이고 앞, 뒤 항목이 표시된다.
무난히 웹사이트에서 이미지 보이는 효과에서 많이들 봐 왔을 것이다.
xml에서 spacing 속성은 이미지간의 간격, animationDuration 은 이미지 스크롤 교체 시간을 이야기 한다.
xml 파일은 다음과 같다.
<?xml version="1.0" encoding="utf-8"?>
<Gallery xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gallery"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:spacing="5px"
android:animationDuration="1500"
/>
자바 파일은 다음과 같다.
public class ImageViewActivity extends Activity{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Gallery g = (Gallery)findViewById(R.id.gallery);
g.setAdapter(new ImageAdapter(this));
}
}
class ImageAdapter extends BaseAdapter{
Context _context;
int[] _img = {R.drawable.calendar,R.drawable.ic_launcher};
public ImageAdapter(Context context){
_context = context;
}
public int getCount() {
return _img.length;
}
public Object getItem(int position) {
return _img[position];
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView view;
if(convertView == null){
view = new ImageView(_context);
}
else{
view = (ImageView)convertView;
}
view.setImageResource(_img[position]);
view.setScaleType(ImageView.ScaleType.FIT_XY);
view.setLayoutParams(new Gallery.LayoutParams(45,45));
return view;
}
}
여기에서 보면 LayoutParams 의 Width, Height 설정하는 부분의 사이즈는 이미지 사이즈를 말 하는 것이다.
이미지 파일을 만들어서 보여 줄 때 픽셀 단위로 확실하게 통일 해야 할 것이다. (필자 생각이다.)
설정
트랙백
댓글
글
이것은 2차원 표 형태로 출력하는 위젯이다.
그리드 뷰는 많이들 봐 왔을 것이다.
여기에는 문자열, 이미지 모두 가능하고 다수의 데이터 중 하나를 선택 받을 경우 적합하다.
xml
<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/grid"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:numColumns="auto_fit"
android:columnWidth="60dp"
android:stretchMode="columnWidth"
android:gravity="center"
/>
java
package imageview.test;
import android.app.Activity;
import android.os.*;
import android.view.*;
import android.widget.*;
import android.widget.AdapterView.*;
import android.content.*;
public class ImageViewActivity extends Activity{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
GridView grid = (GridView)findViewById(R.id.grid);
ImageAdapter adapter = new ImageAdapter(this);
grid.setAdapter(adapter);
grid.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> parent, View view, int index, long id){
Toast.makeText(ImageViewActivity.this, index+"선택", Toast.LENGTH_SHORT).show();
}
});
}
}
class ImageAdapter extends BaseAdapter{
Context _context;
int[] picture = {R.drawable.calendar,R.drawable.calendar,R.drawable.calendar};
public ImageAdapter(Context context){
this._context=context;
}
public int getCount(){
return 100;
}
public Object getItem(int index){
return picture[index%3];
}
public long getItemId(int index){
return index;
}
public View getView(int index, View view, ViewGroup parent){
ImageView imgview;
if(view==null){
imgview = new ImageView(_context);
imgview.setLayoutParams(new GridView.LayoutParams(45,45));
imgview.setAdjustViewBounds(false);
imgview.setScaleType(ImageView.ScaleType.CENTER_CROP);
imgview.setPadding(8,8,8,8);
}
else{
imgview = (ImageView)view;
}
imgview.setImageResource(picture[index % 3]);
return imgview;
}
}
실행을 해 보면 100개의 공간에 이미지가 들어가 있는 것을 확인 할 수가 있다.
설정
트랙백
댓글
글
리스트 같은 경우는 한번에 다 나타나는 케이스지만 이것은 클릭을 하면 팝업 형태로 주르륵 나타난다.
모바일 같이 협소한 공간에선 유용한 것이다.
xml
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:id="@+id/text"
android:text="select"
/>
<Spinner
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/spinner"
/>
java
ArrayAdapter<CharSequence> arr;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Spinner spinner = (Spinner)findViewById(R.id.spinner);
spinner.setPrompt("Select");
arr = ArrayAdapter.createFromResource(this, R.array.array, android.R.layout.simple_spinner_item);
arr.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(arr);
spinner.setOnItemSelectedListener(new OnItemSelectedListener(){
public void onItemSelected(AdapterView<?> parent, View view, int index, long id){
Toast.makeText(ImageViewActivity.this, arr.getItem(index), Toast.LENGTH_SHORT).show();
}
public void onNothingSelected(AdapterView<?> parent){
}
});
}
실행을 하기 전에 하나 짚고 가자면 array xml을 꼭 생성하고 어댑터에 리소스를 연결 하는 것이 중요하다.
물론 사후 관리를 위해서이다.
설정
트랙백
댓글
글
커스텀 항목 뷰는 원하는 항목 배치에 좋다.
먼저 커스텀 레이아웃을 작성한다.
mail.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:id="@+id/text"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn"
android:text="test"
android:layout_alignParentRight="true"
/>
<ListView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/list"
/>
</RelativeLayout>
Item 클래스
public class Item {
String _name;
public Item(String name){
this._name = name;
}
}
Adapter 클래스
class ListAdapter extends BaseAdapter{
Context _main;
LayoutInflater _inflater;
ArrayList<Item> _item;
int _layout;
public ListAdapter(Context context, int layout, ArrayList<Item> arr){
this._main=context;
this._inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this._layout=layout;
this._item=arr;
}
public int getCount(){
return this._item.size();
}
public String getItem(int index){
return this._item.get(index)._name;
}
public long getItemId(int index){
return index;
}
public View getView(int index, View view, ViewGroup parent){
final int idx = index;
if(view==null){
view = this._inflater.inflate(this._layout,parent,false);
}
TextView txtview = (TextView)view.findViewById(R.id.text);
txtview.setText(this._item.get(idx)._name);
Button btn = (Button)view.findViewById(R.id.btn);
btn.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v){
String str = _item.get(idx)._name;
Toast.makeText(_main, str, Toast.LENGTH_SHORT).show();
}
});
return view;
}
}
메인 클래스
public class ImageViewActivity extends Activity{
ArrayList<Item> arr;
ListView list ;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
arr = new ArrayList<Item>();
Item item;
item = new Item("first");
arr.add(item);
item = new Item("second");
arr.add(item);
item = new Item("third");
arr.add(item);
ListAdapter adapter = new ListAdapter(this,R.layout.main,arr);
ListView list;
list=(ListView)findViewById(R.id.list);
list.setAdapter(adapter);
}
}
실행을 하면 어댑터를 통하여 제어를 하는 것이 확인 가능하다.
설정
트랙백
댓글
글
다음은 리스트 뷰를 입력에 따라 추가 삭제 하는 내용이다.
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<EditText
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="4"
/>
<Button
android:id="@+id/add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="3"
android:text="add"
/>
<Button
android:id="@+id/del"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="3"
android:text="delete"
/>
</LinearLayout>
<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
java 코드
ArrayList<String> arr;
ArrayAdapter<String> adapter;
ListView list ;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
arr = new ArrayList<String>();
arr.add("first");
arr.add("second");
arr.add("third");
adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice,arr);
list = (ListView)findViewById(R.id.list);
list.setAdapter(adapter);
list.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
list.setDivider(new ColorDrawable(0xffffff00));
list.setDividerHeight(2);
list.setOnItemClickListener(i_listener);
findViewById(R.id.add).setOnClickListener(b_listener);
findViewById(R.id.del).setOnClickListener(b_listener);
}
AdapterView.OnItemClickListener i_listener = new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView parent, View view, int position, long id){
Toast.makeText(ImageViewActivity.this, "Select : " + arr.get(position), Toast.LENGTH_SHORT);
}
};
Button.OnClickListener b_listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText ed = (EditText)findViewById(R.id.text);
switch(v.getId())
{
case R.id.add:
String text = ed.getText().toString();
if(text.length()!=0)
{
arr.add(text);
ed.setText("");
adapter.notifyDataSetChanged();
}
break;
case R.id.del:
int id = list.getCheckedItemPosition();
if(id!=ListView.INVALID_POSITION)
{
arr.remove(id);
list.clearChoices();
adapter.notifyDataSetChanged();
}
break;
}
}
};
여기에서 지금 SINGLE_CHOICE 로 된 것을 MULTIPLE_CHOICE 로 바꿔주면 한거번에 다수를 지울 수도 있다.
설정
트랙백
댓글
글
이들은 여러개의 차일드 뷰를 가질 수도 있으며 터치나 키패드로 항목을 선택 할 수도 있다.
먼저 리스트 뷰를 보면 xml 파일을 다음과 같이 작성한다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
그리고 자바 파일은 다음과 같다.
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ArrayList<String> arr = new ArrayList<String>();
arr.add("1");
arr.add("2");
arr.add("3");
arr.add("4");
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arr);
ListView list = (ListView)findViewById(R.id.list);
list.setAdapter(adapter);
}
행여 혹시나 ArrayList가 어떤 것을 import 해야할지 모르는 사람들을 위해 한마디. java.util 을 import 하면 된다.
여기에서 보면 먼저 데이터를 형성하고 그 다음 어댑터를 준비, 다음으로 연결 했다. 어댑터의 속성은 다음과 같다.
첫번째 인자는 현재 액티비티. 그 다음은 리소스 아이디, 마지막으로 생성된 데이터다. 마지막 인자는 배열 형태로도 넣을 수 있다.
리소스 아이디를 살펴보면 다음과 같다.
리소스 아이디 | 설명 |
simple_list_item_1 | 하나의 텍스트 뷰 |
simple_list_item_2 | 두개의 텍스트 뷰 |
simple_list_item_check | 오른쪽에 체크 표시 |
simple_list_item_single_choice | 오른쪽에 라디오 버튼 표시 |
simple_list_item_multiple_choice | 오른쪽에 체크 버튼 표시 |
하지만 이런 형식으로 데이터를 입력 하는 것보다 리소스에 정의 해서 쓰는 것이 좋다.
리소스 파일을 생성해서 10개의 데이터를 넣어보자.
arrays.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name ="array">
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
<item>6</item>
<item>7</item>
<item>8</item>
<item>9</item>
<item>10</item>
</string-array>
</resources>
java 파일에서는 어댑터를 다음과 같이 써 주면 된다.
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,R.array.array,android.R.layout.simple_list_item_1);
리스트 뷰에는 다음과 같은 속성들이 존재한다.
속성 | 인자 | 설명 |
none | CHOICE_MODE_NONE | 항목 선택 못함 |
singleChoice | CHOICE_MODE_SINGLE | 하나의 항목 선택 |
multipleChoice | CHOICE_MODE__MULTIPLE | 복수의 항목 선택 |
java 코드에서 다음과 같은 코드를 추가하고 실행해보면 변화를 알 수가 있을 것이다.
list.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
list.setDivider(new ColorDrawable(0xffffff00));
list.setDividerHeight(2);
설정
트랙백
댓글
글
버튼과 에디트 텍스트는 이를 상속받아서 그 기능을 쓰기 때문에 거의 동일한 속성들을 이용 할 수 있다.
각 속성에서 보면 에디트 텍스트에는 scrollHorizontally 라는 속성이 있다. 이것은 문자열이 가로 스크롤을 넘어 입력을 받더라도 문자열을 계속 입력 할 수 있고 엔터 키를 누르면 강제로 개행이 바뀐다. 하지만 singleLine 속성을 주면 개행이 되지 않는다.
Hint는 배경에 이 컴포넌트가 어떤 동작을 하는 것인지 예시를 적어 줄 수도 있게 되어 있다. 마치 백그라운드 처럼 나타난다.
또한 selectAllOnFocus 속성을 지정하면 문자열 전체를 선택하면서 캐럿은 맨 마지막에 위치 한다.
cursorVisible은 편집 중인 문자열의 위치를 보이거나 숨겨준다.
autoLink는 | 를 통하여 여러가지 링크를 같이 한다. 그 종류는 다음과 같다.
none - 링크 지원하지 않음
email - 이메일 주소
map - 지도 주소
web - 웹 주소
phone - 전화번호
all - 모든 패턴 인식
Editable 을 이용하면 문자열 편집이 가능하다.
Editable insert(int index, CharSequence text) 경우는 어디 위치에 text를 삽입하라
Editable delete(int index, int endIndex) 경우는 어디 위치에서 endIndex까지 문자열을 삭제하라
Editable append(char text) 경우는 맨 마지막에 text를 붙여라
void clear() 경우는 문자열 clear
Editable replace(int startIndex, int endIndex, CharSequence text) 경우는 어디 위치에서 어디 위치까지 문자열 변경하라
TextWatcher 를 이용하면 입력되는 문자의 변경을 감지 할 수 있다.
단 android.text.*; 을 import 시켜야 한다.
다음은 그 예제 이다.
TextView view;
EditText edit;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
view = (TextView)findViewById(R.id.view);
edit = (EditText)findViewById(R.id.edit);
edit.setFilters(new InputFilter[]{new InputFilter.LengthFilter(3)});
edit.addTextChangedListener(watcher);
}
TextWatcher watcher = new TextWatcher(){
public void afterTextChanged(Editable s){
}
public void beforeTextChanged(CharSequence s, int start, int count, int after){
}
public void onTextChanged(CharSequence s, int start, int before, int count){
view.setText("echo : " + s);
}
};
위에서 보면 after, before, on 으로 변경 후, 변경 전, 변경 중 상태에 대한 이벤트라는 것을 알 수가 있다.
또한 setFilters를 이용하여 입력하는 문자열의 길이를 제한 시킬 수도 있다.
설정
트랙백
댓글
글
대체 리소스란 그 환경이 변함에 따라 대체 한다는 의미이다.
예를 들어 화면을 회전 하였을 경우 거기에 맞게 변화하게 된다.
여기에서 기본 적으로 가로 형태를 돌렸을 경우 -land 폴더를 찾아가고 -port 경우는 세로이다.
-port 가 없을 경우에는 layout 폴더를 참조를 한다.
먼저 res/layout-land 폴더를 만들고 layout 내의 xml과 동일한 내용을 적용을 시켜보자 코드는 다음과 같다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
>
<Button
android:layout_width="100px"
android:layout_height="wrap_content"
android:text="1번"
/>
<Button
android:layout_width="100px"
android:layout_height="wrap_content"
android:text="2번"
/>
</LinearLayout>
이 코드를 실행하여 에뮬레이터에서 Ctrl + F11 을 누르면 화면의 방향이 변하는데 이를 실행함서 그 내용을 확인 할 수 있다.
설정
트랙백
댓글
글
여기서 스타일은 뷰, 테마는 액티비티 단위에 적용되고, 스타일은 문단 스타일, 테마는 데스크탑 테마와 개념상 일치한다.
스타일은 상속을 이용하여 사용 할 수가 있다. 그럴 경우 parent라는 키워드가 붙지만, 그렇지 않을 경우 name만 이용하면 된다.
다음은 그 예이다.
styles.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name = "style1">
<item name = "android:textColor">#fff000</item>
<item name = "android:textSize">15pt</item>
</style>
<style name = "style2" parent ="@style/style1">
<item name = "android:textColor">#ff0000</item>
</style>
</resources>
main.xml
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
style = "@style/style1"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
style ="@style/style2"
/>
실행을 해 보면 처음의 것은 노란색 글자가 나오고 15pt로 정의 된 글자가 나올 것이다.
두번째는 색상은 재정의 했으나 size는 상속받은 내용 대로 15pt로 동일하게 출력이 되는 것을 확인 할 수 있다.
테마의 경우를 살펴보면 styles.xml에 하나만 추가를 해 주면 된다.
<style name="theme">
<item name = "android:windowNoTitle">true</item>
</style>
그리고 메니페스트 속성에 테마를 지정을 해 준다.
android:theme="@style/theme"
이 부분을 activity 부분에 추가를 해 주면 된다.
그렇게 하면 윈도우 타이틀이 없어짐을 확인 할 수 있으며, android:theme="@android:style/Theme.Dialog" 처리를 할 경우 대화상자 처럼 나타 날 것이다.
RECENT COMMENT