View - TextView, Button,ToggleButton

웹 & 안드로이드/Android|2013. 10. 4. 12:30

1. TextView


- layout xml파일에서 생성.


- 혹은, 자바 액티비티 java파일에서 생성 할 수 잇다

- MainActivity .java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package wakeup.textview_test_dynamic;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.widget.RelativeLayout;
import android.widget.RelativeLayout.LayoutParams;
import android.widget.TextView;
 
public class MainActivity extends Activity {
    RelativeLayout relativeLayout;    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //xml에 만들어진 레이아웃을 불러옴.
        relativeLayout = (RelativeLayout)findViewById(R.id.relativelayout);
        
        TextView textView = new TextView(getApplicationContext());//새로운 TextView를 생성.
        textView.setText("텍스트!");//내용 삽입.
        
        //뷰의 크기등 스타일을 지정하기 위한 코드이다.
        //params라는 스타일을 하나 생성후, 마진을 설정한 후에 textView에 이스타일을 넣었다.
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
                                                                       (int)LayoutParams.WRAP_CONTENT
                                                                     , (int)LayoutParams.WRAP_CONTENT);
        params.setMargins(11, 120, 10, 130);
        textView.setLayoutParams(params); 
        
        //불러온 레이아웃에 이러한 설정을 가진 textView를 넣는다.
        relativeLayout.addView(textView);
    } 
}


- 다음 java코드는

RelativeLayout.LayoutParams params=new RelativeLayout.LayoutParams(...);

textview.setLayoutParams(params);


 xml에서 이에 해당한다.

 <TextView

        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>


-RelativeLayout.LayoutParams  텍스트뷰의 크기나 위치는 텍스트뷰가 위치한 상위 레이아웃에서 관리한다.

  텍스트뷰가 이 메소드(textView.setLayoutParams())를 통해 텍스트뷰의 크기나 위치를 가지고 있으면

  바로 상위의 레이아웃은 이 정보를 토대로 텍스트뷰 크기, 위치를 나타내게 된다. 

 (가상메소드, 인터페이스(추상메소드), 내부클래스 기술과 관련이 있다.)(정확히는 잘 모르겟다.)


2.button


-버튼에 색이나 그림을 넣을 수 있다.


-버튼에 색 넣기.

-layout.xml

1
2
3
4
5
6
<Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/button_soild"
        android:text="Gradient변색" />


android:background="" : 이 속성에 그림 혹은 xml id가 들어간다.


- xml형식의 그림.

-res/drawble-hdpi/button_soild.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_pressed="true">
        <shape>
            <solid android:color="#500f0f0f"/>
            <stroke android:color="#ffffff"/>
            <corners android:radius="5sp"/>
        </shape>
    </item>
    <item>
        <shape>
            <solid android:color="#ff5555"/>
            <corners android:radius="5sp"/>
        </shape>
    </item>
</selector>


*-xml파일에서 리소스에 있는 그림을 넣는 방법.

-res/drawble-hdpi/onepeace.xml

1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_pressed="true"
        android:drawable="@drawable/onepeace_on">        
    </item>
    <item android:drawable="@drawable/onepeace">       
    </item>
</selector>


-android:drawable="" 이속성에 그림id를 넣으면 된다.


3.ToggleButton


-셀렉트 기능 역할을 부여하는 클래스는 View가 아니라 Button을 상속 받은 CompoundButton클래스 이다.


-그래서 토글 버튼의 온,오프 기능을 활용하기 위해서는 리스너 클래스에 CompoundButton를 상속 시켜야 한다.

-MainActivity .java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class MainActivity extends Activity {
    ToggleButton tbtn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tbtn = (ToggleButton)this.findViewById(R.id.toggleButton1);
        
        //CompoundButton.OnCheckedChangeListener()를 익명클래스로 바로 호출하였다.
        tbtn.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {            
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if(isChecked){
                    Toast.makeText(getApplicationContext(), "On", 0).show();
                }else{
                    Toast.makeText(getApplicationContext(), "Off", 0).show();
                }
            }
        });
    }
}


-onCheckedChanged()는 매개변수로  boolean isChecked를 받음으로써 토글이 체크 되어있는지 아닌지를 알 수 있다.


*switch button도 온오프 기능은 같다.

-다만 스위치는 API LEVEL 14이후에 나왔다. 

댓글()