programing

대화상자로서의 Android 활동

elecom 2023. 8. 16. 21:56
반응형

대화상자로서의 Android 활동

는 이이지정활있습다라는 이름의 있습니다.whereActity하위 대화 상자도 있습니다.이제 이 활동을 다른 활동에 대한 대화상자로 표시합니다.

내가 어떻게 그럴 수 있을까?

enter image description here

상자로 했습니다.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"

원하는 보기로 활동_활동을 설계합니다.

대화상자로 활동 만들기, 다음은 전체 예제입니다.

enter image description here

  1. AndroidManife.xml

    <activity android:name=".appview.settings.view.DialogActivity" android:excludeFromRecents="true" android:theme="@style/Theme.AppCompat.Dialog"/>

  2. 대화 상자 활동.kt

    class DialogActivity : AppCompatActivity() {
      override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_dialog)
        this.setFinishOnTouchOutside(true)
    
        btnOk.setOnClickListener {
          finish()
        }
      }
    }
    
  3. 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

반응형