2017-10-14 47 views
1

Android에서 대화 상자 테두리를 추가하려고합니다.android의 대화 상자 창에 테두리 추가

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:left="5dp" 
     android:right="5dp" 
     android:bottom="5dp" 
     android:top="5dp"> 
    <shape android:shape="rectangle"> 
     <solid android:color="#ffbf80" /> 
     <corners android:radius="30dp" /> 
     <padding 
     android:left="1dp" 
     android:top="1dp" 
     android:right="1dp" 
     android:bottom="1dp" /> 
    </shape> 
    </item> 
</layer-list> 

이 대화 상자에 테두리를 추가하려면 다음과 같은 라인을 그릴 수를 사용하여 대화 상자 창에 둥근 모서리를 추가 한, 나는

<shape android:shape="rectangle"> 
    <solid 
    android:color="#ffbf80" /> 
    <stroke android:color="#ff3300" android:width="2dp"/> 
    <corners 
    android:radius="30dp" /> 
    <padding 
    android:left="1dp" 
    android:top="1dp" 
    android:right="1dp" 
    android:bottom="1dp" /> 
</shape> 

아래로 스트로크 요소를 추가하여 시도하지만이 생성됩니다 텍스트 뷰, 아이콘, 버튼과 같은 대화 상자의 모든 요소 주위에 테두리. 나는 그저 창 테두리를 원한다. 나는에 AlertDialog.Builder를 사용하여 자바 코드에서 경고 대화 상자를 만든

,

myDialogBuilder=new AlertDialog.Builder(new 
ContextThemeWrapper(getActivity(), 
R.style.CustomDialog)) 
.setTitle(title.getText().toString()) 
.setMessage(myText) 
.setPositiveButton("Done", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) 
       { 
       getDialog().dismiss(); 
       } 
       }); 

myDialog=myDialogBuilder.create(); 

myDialog.setOnShowListener(new DialogInterface.OnShowListener() { 
       @Override 
       public void onShow(DialogInterface dialog) { 
        Window view=((AlertDialog)dialog).getWindow(); 
        view.setBackgroundDrawable(new 
        ColorDrawable(Color.TRANSPARENT)); 
       ... 
       } 
}); 

나는 대화 상자 내 styles.xml에서 다음이

<style name="CustomDialog" parent="@style/ThemeOverlay.AppCompat.Dialog"> 
    <item name="android:backgroundDimEnabled">true</item> 
    <item name="android:background">@drawable/dialog_bg</item> 
    <item name="android:textColorPrimary">@color/my_textcolor</item> 
</style> 

나를 이해 도와주세요 경고 대화 상자 테두리가 표시되도록 변경해야하는 항목은 무엇입니까?

감사

답변

1

다음 코드를 변경하여 알림 대화 상자의 테두리 문제를 해결할 수있었습니다.

대신 대화 상자를 만들 때 테마를 지정, 나는 dialog.setOnShowListener()에서 대화 상자 창에 드로어 블 리소스를 추가

Window view=((AlertDialog)dialog).getWindow(); 
view.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 
// to get rounded corners and border for dialog window 
view.setBackgroundDrawableResource(R.drawable.dialog_bg); 

난 그냥 내 경고 대화 상자에서 제목, 메시지 하나의 버튼이 필요합니다 . 그래서 표준 AlertDialog.Builder 방식으로 작성하고 있습니다 만, 사용자 정의 레이아웃 파일을 사용하고보기를 설정할 수도 있습니다.

0

내 응용 프로그램에서 코너 대화 상자를 반올림,하지만 난 물론 훨씬 더 많은 작업을 필요로 지정 레이아웃이 아닌 표준에 AlertDialog와 사용자 정의 대화 상자를 사용합니다. 대화 상자 클래스에서
style="@style/MyDialogStyle"

  • 에서 onCreate : 대화 레이아웃 XML의 루트 항목에서
    <item name="android:background">@drawable/my_rounded_background</item>

  • 속성을 추가

    • 함께 styles.xml에 MyDialogStyle 정의 추가 :

    getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

  • +0

    답변 해 주셔서 감사합니다. 언급 한 세 가지를 이미 추가했지만 유일한 차이점은 사용자 지정 레이아웃을 사용하는 대신 코드에서 경고 대화 상자를 만드는 것입니다. 그것이 작동하지 않는 이유가 무엇입니까? – Sri

    +0

    여전히 "myDialogBuilder = new AlertDialog.Builder (..)"를 사용하고 있다면 사용자 정의 대화 상자를 만들지 않고 사용자 정의 대화 상자 용으로 만든 클래스는 사용하지 않기 때문에 아무 것도하지 않습니다. "myDialog = new MyCustomDialog()"또는 사용자 정의 대화 상자 클래스를 호출 한 이름으로 변경하십시오. 사용자 정의 대화 상자를 생성하려면 Dialog Android 클래스를 확장하는 Java 클래스를 작성해야합니다. –

    +0

    API 11 이상에서는 AlertDialog.Builder를 사용하여 사용자 지정 스타일로 경고 대화 상자를 만들 수 있다고 생각합니다. 이 링크 https : // stackoverflow를 확인하십시오.co.kr/questions/14770400/android-alertdialog-styling. 경고 대화 상자의 배경색과 둥근 모서리를 설정할 수 있었지만 작동하지 않는 것은 바로 스트로크입니다. Drawable 파일에 획을 추가하면 제목, 버튼, 메시지 및 경고 대화 상자에있는 모든 항목에 둥근 테두리가 표시됩니다. 경고 대화 상자의 경계선이 하나만 있으면됩니다. – Sri