안드로이드에서 다수개의 위젯을 모아서 한개의 복합위젯을 작성하는 예
로그인 박스를 복합 위젯으로 작성해본다
layout/loginbox.xml
<?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" > <TableRow > <TextView android:text="로 그 인" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:layout_span="2" android:textSize="15pt" android:layout_weight="1" /> </TableRow> <View android:background="#aaaaaa" android:layout_width="match_parent" android:layout_height="2dip"/> <TableRow > <TextView android:text="I D" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="15pt" android:layout_weight="1" android:gravity="center"/> <EditText android:id="@+id/usrId" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="3"/> </TableRow> <TableRow > <TextView android:text="PWD" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="15pt" android:layout_weight="1" android:gravity="center"/> <EditText android:id="@+id/usrPwd" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="3" android:password="true"/> </TableRow> <View android:background="#aaaaaa" android:layout_width="match_parent" android:layout_height="2dip"/> <TableRow > <Button android:id="@+id/btnLogin" android:text="로 그 인" android:onClick="onBtnLogin" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:layout_span="2" android:layout_weight="1" android:textSize="15pt"/> </TableRow> </TableLayout>
LoginBox.java
package com.example.androidapp; import android.content.Context; import android.util.AttributeSet; import android.view.LayoutInflater; import android.widget.LinearLayout; public class LoginBox extends LinearLayout { public LoginBox(Context context) { super(context); } public LoginBox(Context context, AttributeSet attrs) { super(context, attrs); LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); inflater.inflate(R.layout.loginbox, this, true); } }
layout/main.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" > <TextView android:id="@+id/textView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#cccccc" android:text="" /> <com.example.androidapp.LoginBox android:id="@+id/loginBox" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>
TestActivity.java
package com.example.androidapp; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.EditText; import android.widget.TextView; public class TestActivity extends Activity { TextView tv; EditText idEdit, pwdEdit; public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); tv = (TextView) findViewById(R.id.textView1); idEdit = (EditText) findViewById(R.id.usrId); pwdEdit = (EditText) findViewById(R.id.usrPwd); } public void onBtnLogin(View v) { tv.setText(idEdit.getText()+", "+pwdEdit.getText()); } }