대화상자로서의 Android 활동
는 이이지정활있습다라는 이름의 있습니다.whereActity하위 대화 상자도 있습니다.이제 이 활동을 다른 활동에 대한 대화상자로 표시합니다.
내가 어떻게 그럴 수 있을까?

상자로 했습니다.AndroidManifest.xml:
<activity android:theme="@android:style/Theme.Dialog" />
사용이 내에서 이 합니다.activity한 앱 목록에 태그를 합니다.
android:excludeFromRecents="true"
사용자가 대화상자 외부를 클릭할 때 대화상자/활동이 삭제되는 것을 중지하려면 다음을 수행합니다.
나 뒤에setContentView()의 신의에Activity매개 변수:
this.setFinishOnTouchOutside(false);
이제 내가 전화할 때startActivity()사용자가 뒤로 단추를 누르면 이전 활동이 표시되는 대화상자로 표시됩니다.
사중인경을 사용하는 하세요.ActionBarActivity 테마 (AppCompat 마를)를 사용해야 .@style/Theme.AppCompat.Dialog대신.
사용자가 대화 상자 외부를 터치할 때 대화 상자 활동이 닫히지 않도록 이 코드를 사용합니다.
this.setFinishOnTouchOutside(false);
API 레벨 11이 필요합니다.
values/styles.xml에서 이 스타일을 정의하여 이전 스플래시를 수행할 수 있습니다.
<style name="Theme.UserDialog" parent="android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:background">@android:color/transparent</item>
<item name="android:windowBackground">@drawable/trans</item>
</style>
AndroidManifest.xml을 사용합니다.
<activity android:name=".SplashActivity"
android:configChanges="orientation"
android:screenOrientation="sensor"
android:theme="@style/Theme.UserDialog">
Appcompat 버전이 필요한 경우
style.xml
<!-- Base application theme. -->
<style name="AppDialogTheme" parent="Theme.AppCompat.Light.Dialog">
<!-- Customize your theme here. -->
<item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
</style>
manifest.xml
<activity
android:name=".MyActivity"
android:label="@string/title"
android:theme="@style/AppDialogTheme">
</activity>
1 - 대화 상자 및 전체 화면과 동일한 활동을 동적으로 사용할 수 있습니다.
러setTheme(android.R.style.Theme_Dialog)전화하기 setContentView(...)그리고.super.oncreate()작업 중입니다.
2 - 활동 테마 스타일을 변경할 계획이 없는 경우 사용할 수 있습니다.
<activity android:theme="@android:style/Theme.Dialog" />
(@faisal khan이 언급한 바와 같이)
활동이 대화상자로 렌더링되는 경우 활동의 xml에 단추를 추가하기만 하면 됩니다.
<Button
android:id="@+id/close_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Dismiss" />
그런 다음 활동의 Java 코드에 클릭 수신기를 첨부합니다. 청자에간호다니출합단히서취▁call라고 불러요.finish()
Button close_button = (Button) findViewById(R.id.close_button);
close_button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
그러면 대화 상자가 닫히고 통화 활동으로 돌아갑니다.
활동 헤더를 제거하고 대화상자에 대한 사용자 정의 보기를 제공하려면 매니페스트의 활동 블록에 다음을 추가합니다.
android:theme="@style/Base.Theme.AppCompat.Dialog"
원하는 보기로 활동_활동을 설계합니다.
대화상자로 활동 만들기, 다음은 전체 예제입니다.
AndroidManife.xml
<activity android:name=".appview.settings.view.DialogActivity" android:excludeFromRecents="true" android:theme="@style/Theme.AppCompat.Dialog"/>대화 상자 활동.kt
class DialogActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_dialog) this.setFinishOnTouchOutside(true) btnOk.setOnClickListener { finish() } } }activity_dialog.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#0072ff" android:gravity="center" android:orientation="vertical"> <LinearLayout android:layout_width="@dimen/_300sdp" android:layout_height="wrap_content" android:gravity="center" android:orientation="vertical"> <TextView android:id="@+id/txtTitle" style="@style/normal16Style" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:paddingTop="20dp" android:paddingBottom="20dp" android:text="Download" android:textColorHint="#FFF" /> <View android:id="@+id/viewDivider" android:layout_width="match_parent" android:layout_height="2dp" android:background="#fff" android:backgroundTint="@color/white_90" app:layout_constraintBottom_toBottomOf="@id/txtTitle" /> <TextView style="@style/normal14Style" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:paddingTop="20dp" android:paddingBottom="20dp" android:text="Your file is download" android:textColorHint="#FFF" /> <Button android:id="@+id/btnOk" style="@style/normal12Style" android:layout_width="100dp" android:layout_height="40dp" android:layout_marginBottom="20dp" android:background="@drawable/circle_corner_layout" android:text="Ok" android:textAllCaps="false" /> </LinearLayout> </LinearLayout>
안드로이드 매니페스트 파일에서 테마를 설정합니다.
<activity android:name=".LoginActivity"
android:theme="@android:style/Theme.Dialog"/>
그리고 대화 상태를 터치로 설정하여 완료합니다.
this.setFinishOnTouchOutside(false);
때때로 아래에 주어진 예외를 얻을 수 있습니다.
원인: java.lang.잘못된 상태 예외:테마를 사용해야 합니다.이 활동의 AppCompat 테마(또는 하위)입니다.
따라서 문제 해결을 위해 간단한 솔루션을 사용할 수 있습니다.
매니페스트에서 활동 테마를 appCompact 대화 상자로 추가합니다.
android:theme="@style/Theme.AppCompat.Dialog"
그것은 누군가에게 도움이 될 수 있습니다.
언급URL : https://stackoverflow.com/questions/1979369/android-activity-as-a-dialog
'programing' 카테고리의 다른 글
| GitHub 인증이 https를 페일오버하여 잘못된 전자 메일 주소를 반환합니다. (0) | 2023.08.16 |
|---|---|
| 오라클 데이터베이스에서 테이블 열의 모든 메타데이터를 보는 방법은 무엇입니까? (0) | 2023.08.16 |
| 리플릿 - 기존 마커를 찾고 마커를 삭제하는 방법은 무엇입니까? (0) | 2023.08.16 |
| 각도 및 마이크로 프론트 엔드 (0) | 2023.08.11 |
| 구성 관리자.앱 설정이 null이 됩니까? (0) | 2023.08.11 |
