●자바로 Button 위젯 만들기
- CustomEx1.java
package com.custom; import android.app.Activity; import android.app.ActionBar.LayoutParams; import android.os.Bundle; import android.widget.Button; import android.widget.LinearLayout; public class CustomEx1 extends Activity{
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
//리니어 레이아웃 선언 LinearLayout layout = new LinearLayout(this); layout.setOrientation(LinearLayout.VERTICAL);
//기타 속성은 레이아웃 파라미터 객체에 지정 LayoutParams params1 = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); //레이아웃 파라미터를 리니어 레이아웃에 적용 layout.setLayoutParams(params1);
//버튼을 선언 Button btn = new Button(this); btn.setText("버튼"); //기타 속성은 레이아웃 파라미터 객체에 지정 LayoutParams params2 = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); //레이아웃 파라미터를 버튼에 적용 btn.setLayoutParams(params2);
layout.addView(btn);
setContentView(layout);
}
} |
●커스텀 버튼 위젯을 자바에서 사용하고 보여주기
- MyButton.java
package com.custom; import android.content.Context; import android.util.AttributeSet; import android.widget.Button; public class MyButton extends Button{
public MyButton(Context context) { //부모의 생성자를 생성하면서 현재 내가 정의하는 버튼 객체가 어떤 액티비티에서 사용되는지 정보를 넘긴다. //모든 위젯은 액티비티를 벗어날수 없다. super(context);
} } |
- CustomEx1.java
package com.custom; import android.app.Activity; import android.app.ActionBar.LayoutParams; import android.os.Bundle; import android.widget.Button; import android.widget.LinearLayout; public class CustomEx1 extends Activity{
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
//리니어 레이아웃 선언 LinearLayout layout = new LinearLayout(this); layout.setOrientation(LinearLayout.VERTICAL);
//기타 속성은 레이아웃 파라미터 객체에 지정 LayoutParams params1 = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); //레이아웃 파라미터를 리니어 레이아웃에 적용 layout.setLayoutParams(params1);
//버튼을 선언 Button btn = new Button(this); btn.setText("버튼"); //기타 속성은 레이아웃 파라미터 객체에 지정 LayoutParams params2 = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); //레이아웃 파라미터를 버튼에 적용 btn.setLayoutParams(params2);
//우리가 정의한 커스텀 버튼을 정의 MyButton my_btn = new MyButton(this); my_btn.setLayoutParams(params2); my_btn.setText("커스텀 버튼"); //리니어에 버튼을 붙인다. layout.addView(btn); layout.addView(my_btn);
setContentView(layout);
}
} |
●커스텀 버튼 위젯을 xml에서 사용하기
- 커스텀 위젯을 xml에서 사용할 경우 패키지 경로까지 써줘야한다.
- MyButton.java
package com.custom; import android.content.Context; import android.util.AttributeSet; import android.widget.Button; public class MyButton extends Button{
//현재 클래스를 순수 자바코드에서 메모리에 올릴때는 Context 정보만 넘기면 되지만, //디자인의 효율목적상 xml레이아웃 파일에서 생성하고자 할대는 xml에서 설정한 각종 //속성 정보가 전달되어지므로, 이 클래스의 생성자에서 그 정보를 받아야 한다.
//결론:생성자 인수를 2개자리로 해야한다. public MyButton(Context context, AttributeSet set) { //부모의 생성자를 생성하면서 현재 내가 정의하는 버튼 객체가 어떤 액티비티에서 사용되는지 정보를 넘긴다. //모든 위젯은 액티비티를 벗어날수 없다. super(context, set);
} }
|
- Custom_ex2.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" >
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="네이티브 버튼"/> <com.custom.MyButton android:id="@+id/btn_cus" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="커스텀 버튼"/>
</LinearLayout> |
- CustomEx2.java
package com.custom; import com.example.day0314.R; import android.app.Activity; import android.os.Bundle; public class CustomEx2 extends Activity{
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.custom_ex2);
}
}
|
'프로그래밍 > 안드로이드' 카테고리의 다른 글
안드로이드 리스트뷰2 (ListView), Adapter 재정의 (0) | 2015.03.25 |
---|---|
안드로이드 인플레이터(inflater) (0) | 2015.03.18 |
안드로이드 xml레이아웃 include (0) | 2015.03.17 |
안드로이드 리스트뷰1 (ListView) (0) | 2015.03.17 |
안드로이드 스피너(spinner) (0) | 2015.03.17 |
댓글