반응형
Activity를 Dialog로 만들어 띄우기
Dialog로 만드는 방법은 생각외로 간단하다.
가장 큰 핵심은 역시 theme를 Dialog theme로 바꿔주는게 아닐까 싶다.
일단 나중을 위해 테스트로 만들어놓은 소스코드를 올려놓고 부가설명으로
기록해두자.
-Activity-
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.TextView;
public class CustomNotiActivity extends Activity {
TextView btn1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.custom_noti);
btn1 = (TextView) findViewById(R.id.btn1);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
}
}
-layout-
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="320dp"
android:layout_height="160dp">
<TextView
android:id="@+id/atdTitleTv"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@android:color/background_light"
android:gravity="start|center_horizontal|center_vertical"
android:paddingLeft="20dp"
android:text="동기화 상태"
android:textColor="@color/colorAccent" />
<TextView
android:id="@+id/atdContentTv"
android:layout_width="match_parent"
android:layout_height="72dp"
android:background="@android:color/background_light"
android:gravity="start|center_horizontal|center_vertical"
android:paddingLeft="20dp"
android:text="리스트뷰로 상세정보 확인"
android:textColor="@color/colorAccent"
android:textSize="20sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="48dp"
android:orientation="horizontal">
<TextView
android:id="@+id/btn1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:background="@android:color/holo_blue_bright"
android:gravity="center"
android:text="확인"
android:textColor="@android:color/white" />
</LinearLayout>
</LinearLayout>
-AndroidManifest-
<activity android:name=".CustomNotiActivity"
android:theme="@android:style/Theme.Holo.Dialog"/>
그냥 테스트용이라 정말 이상하게 생겼지만 나머지는 응용하기나름이라 이정도로만 해둔다.
위의 코드를 적용시키면 아래와 같이 Dialog가 띄어지는것이 확인이 가능하다
여기서 중요한게 두개가 있는데 우선
AndroidManifest에 Activity를 등록하면서 theme를 Dialog로 설정하는것
그리고
Dialog로 만들어지는 Activity에
requestWindowFeature(Window.FEATURE_NO_TITLE);
라는 선언을 해줌으로서 타이블바가 사라져 온전히 Dialog형태로 사용이 가능하다.
근데 작업을 하다 한가지 의문인게 자바내에서 타이틀을 없애줄수 있다면
어디선가 설정해주는곳이 또 있지않을까? 싶어 찾아본 결과
이것 역시 Theme로 설정해줄 수 있다.
처음부터 Dialog.NoActionBar 를 설정해 주면 타이틀이 사라지는것을 확인하였다.
<activity android:name=".CustomNotiActivity"
android:theme="@android:style/Theme.Holo.Dialog.NoActionBar"/>
반응형
댓글