대화 상자 스타일 활동 창을 가져 와서 화면을 채우려면 어떻게해야합니까?
대화 상자 테마 세트가있는 활동을 사용하고 있으며 전체 화면으로 만들고 싶습니다. WindowManager를 통해 창을 전체 너비와 높이로 수동으로 확장하더라도 모든 종류의 작업을 시도했지만 아무것도 작동하지 않습니다.
분명히 대화 상자 창 (또는 대화 상자 테마가있는 활동)은 내용에 따라 확장되지만 항상 작동하지는 않습니다. 예를 들어 너비와 높이가 FILL_PARENT (레이아웃 컨테이너도)로 설정된 진행률 표시 줄 원을 표시하지만 여전히 대화 상자는 화면을 채우지 않고 훨씬 작은 진행률 표시 줄을 둘러 쌉니다.
대화 상자 창 안에 작은 것을 표시하는 방법이 있어야하지만 내용의 크기를 조정하지 않고 전체 화면 크기로 확장해야합니까?
해결책을 찾았습니다.
Theme.Dialog
스타일 세트 가있는 활동 에서 다음을 수행하십시오.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.your_layout);
getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
}
에 전화 Window.setLayout()
한 후 전화 를 거는 것이 중요합니다 setContentView()
. 그렇지 않으면 작동하지 않습니다.
이 값을 스타일 android : windowMinWidthMajor 및 android : windowMinWidthMinor에 추가 할 수 있습니다.
<style name="Theme_Dialog" parent="android:Theme.Holo.Dialog">
...
<item name="android:windowMinWidthMajor">97%</item>
<item name="android:windowMinWidthMinor">97%</item>
</style>
아래 화면과 같이 80 % 만 채우고 싶습니다.
DisplayMetrics metrics = getResources().getDisplayMetrics();
int screenWidth = (int) (metrics.widthPixels * 0.80);
setContentView(R.layout.mylayout);
getWindow().setLayout(screenWidth, LayoutParams.WRAP_CONTENT); //set below the setContentview
getContentow (..) 아래에 getwindow (). setLayout ... 줄을 넣을 때만 작동합니다.
감사합니다 @ Matthias
dialog_custom_layout.xml 을 다른 레이아웃 대신 RelativeLayout 으로 래핑하십시오 .
대화의 경우 누군가에게 도움이 될 수 있습니다. 대화 상자가 전체 화면 너비를 갖기를 원합니다. 많이 검색했지만 유용한 것은 없습니다. 마침내 이것은 나를 위해 일했습니다 :
mDialog.setContentView(R.layout.my_custom_dialog);
mDialog.getWindow().setBackgroundDrawable(null);
이것을 추가하면 대화 상자가 전체 화면으로 나타납니다.
이 답변은 "Theme.AppCompat.Dialog"또는 "Theme.AppCompat.Light.Dialog", "Theme.AppCompat.DayNight.Dialog"등과 같은 다른 "Theme.AppCompat.Dialog"자손을 사용하는 사람들을위한 해결책 입니다 . 모든 활동에 대해 AppCompatActivity를 사용하므로 AppCompat 대화 상자를 사용해야합니다. 허용 된 답변을 사용하면 대화 상자가 모든면 (상단, 오른쪽, 하단 및 왼쪽)에 패딩되는 문제가 있습니다.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.your_layout);
getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
}
활동 스타일에 다음 코드를 추가하십시오.
<style name="DialogActivityTheme" parent="Theme.AppCompat.Dialog">
<item name="windowNoTitle">true</item>
<item name="android:windowBackground">@null</item>
</style>
알다시피, 대화 상자에 패딩을 생성하는 문제는 "android : windowBackground"이므로 창 배경을 null로 만듭니다.
최상위 레이아웃에서 최소 너비를 설정하십시오.
android:minWidth="300dp"
예를 들면 다음과 같습니다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="300dp">
<!-- Put remaining contents here -->
</LinearLayout>
Matthias' answer is mostly right but it's still not filling the entire screen as it has a small padding on each side (pointed out by @Holmes). In addition to his code, we could fix this by extending Theme.Dialog style and add some attributes like this.
<style name="MyDialog" parent="@android:style/Theme.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowNoTitle">true</item>
</style>
Then we simply declare Activity with theme set to MyDialog
:
<activity
android:name=".FooActivity"
android:theme="@style/MyDialog" />
This would be helpful for someone like me. Create custom dialog style:
<style name="MyDialog" parent="Theme.AppCompat.Light.Dialog">
<item name="windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowIsFloating">false</item>
</style>
In AndroidManifest.xml
file set theme for wanted activity:
<activity
android:name=".CustomDialog"
...
android:theme="@style/MyDialog"/>
That is all, no need to call methods programaticaly.
In your manifest file where our activity is defined
<activity
android:name=".YourPopUpActivity"
android:theme="@android:style/Theme.Holo.Dialog" >
</activity>
without action bar
<activity android:name=".YourPopUpActivity"
android:theme="@android:style/Theme.Holo.Dialog.NoActionBar"/>
'IT' 카테고리의 다른 글
UIButton의 imageSize를 조정하는 방법은 무엇입니까? (0) | 2020.06.26 |
---|---|
UIView 상단에 테두리를 추가하는 방법 (0) | 2020.06.26 |
Angular- "내 보낸 멤버 'Observable'이 없습니다" (0) | 2020.06.26 |
WordPress 게시물 추천 이미지 URL을 얻는 방법 (0) | 2020.06.26 |
DistutilsOptionError : home 또는 prefix / exec-prefix를 제공해야합니다. (0) | 2020.06.26 |