2013-07-07 4 views
6

이 간단한 대화 조각이 반투명하게하는 방법 :나는이 간단한 대화 반투명 만들려고 노력하고

class TestDialog extends SherlockDialogFragment 
{ 


    public TestDialog() 
    { 
    super();   
    } 




    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceStateBundle) 
    { 

    AlertDialog.Builder builder1 = new AlertDialog.Builder(getActivity()); 
    // Get the layout inflater 
    LayoutInflater inflater1 = getActivity().getLayoutInflater(); 

    // Inflate and set the layout for the dialog 
    // Pass null as the parent view because its going in the dialog layout 
    builder1.setView(inflater1.inflate(R.layout.dlg_test, null)) 
    // Add action buttons 
    .setPositiveButton("Ok", new DialogInterface.OnClickListener() 
    { 

     @Override  
     public void onClick(DialogInterface dialog, int id)   
     {   
      // sign in the user ...      
     } 


    }) 
    .setNegativeButton("Cancel", new DialogInterface.OnClickListener() 
     {  
       @Override 
     public void onClick(DialogInterface dialog, int id)    
     {   

     }   
     }); 

     return builder1.create(); 

    }   


} 

레이아웃은 다음과 같다 : 나는 모든 것을 시도

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/test" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/username" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="16dp" 
     android:layout_marginLeft="4dp" 
     android:layout_marginRight="4dp" 
     android:layout_marginBottom="4dp" 
     android:hint="User name" /> 

</LinearLayout> 

을, 선형 레이아웃의 배경 drawable으로 투명한 .png를 사용하는 것에서 알파 필드를 0.5로 설정하는 것, Drawable으로 0과 같은 색을 사용하는 것까지. 나는 그 다이얼로그를 반투명하게 만들 수 없다. 나는 그것이 가능할지라도 모른다. 내가 만들고자하는 것은 다음 이미지의 패널과 같은 대화 상자입니다 : semi-transparent control panel. 감사합니다. . 주 1 : 필요한 최소 sdk는 버전 8이며 대상은 최신 (실제로는 v17)입니다.

+0

: 관련 질문에 대한 내 대답에

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.TranslucentDialog); AlertDialog dialog = builder.create(); 

링크 SDK 버전. 1.6 대화 상자는 기본적으로 반투명하지만'AlertDialog.Builder (Context context, int theme)'를 시도합니다. 여기서 theme은'android.R.style.Theme_Dialog '입니다. – techiServices

+0

XML에서'android : background = "# 4000"'같은 것을 사용해 보셨나요? (# 4000은 ARGB_4444 색상 공간 임). – techiServices

+0

둘 다 시도했지만 작동하지 않았습니다. –

답변

5

대신 :

return builder1.create(); 

이 퍼팅보십시오 :

Dialog dialog = builder1.create(); 
Drawable d = new ColorDrawable(Color.BLACK); 
d.setAlpha(130); 
dialog.getWindow().setBackgroundDrawable(d); 
return dialog; 
+0

그 코드는 어디에 두어야합니까? –

+0

내 대답을 편집했습니다. –

+0

작동하지 않았습니다. 대화는 항상 흑인입니다! 내 포스트 업데이트를보고 대화 상자를보고 싶습니다. –

0

당신은 당신의 대화 조각 참조에이 두 가지 주제 중 하나를 시도 할 수 있습니다. 이 도움이 될 것입니다

yourdialogFragment.setStyle(style,android.R.style.Theme_Translucent_NoTitleBar_Fullscreen); 

또는

yourdialogFragment.setStyle(style,android.R.style.Theme_Holo_Light_Dialog); 

희망.

0

당신은 당신이 슈퍼 클래스의 경우이를 사용하여 배경을 투명하게 만드는 대화입니다 시도 할 수 있습니다 :

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

또는이 수퍼 클래스는 DialogFragment 경우 :

getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); 

내 다른 솔루션이었다 "kaushal trivedi"와 비슷합니다. 사용 DialogFragments :

public class MyDialogFragment extends DialogFragment { 

... 

    @Override 
    public void onCreate(Bundle savedInstance){ 
    super.onCreate(savedInstance); 
    setStyle(DialogFragment.STYLE_NO_FRAME, android.R.style.Theme_Translucent_NoTitleBar_Fullscreen); 
    } 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.my_dialog, container,false); 
    } 
} 

이 당신의 대화가 전체 화면 및 배경없이 할 수 있습니다, 그래서 당신은 당신이 그 안에 원하는 무엇도 넣을 수 있습니다.

+0

대화 상자와 창 사이에 여백을두고 싶다면 실행 가능한 솔루션이 아닙니다. – plopd

0

당신은뿐만 아니라 당신의 대화의 onCreateView에서

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

을 넣을 수있는이

public class Dialogs extends DialogFragment { 

    public Dialogs() { 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setStyle(DialogFragment.STYLE_NO_TITLE, android.R.style. Theme_WallpaperSettings); 
    } 
} 
1
@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    Dialog dialog = super.onCreateDialog(savedInstanceState); 
    dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 
    return dialog; 
} 

을보십시오.

0

이것은 AlertDialog로 반투명을 달성 한 것입니다.

만든 사용자 정의 스타일 :

<style name="TranslucentDialog" parent="@android:style/Theme.DeviceDefault.Dialog.Alert"> 
    <item name="android:colorBackground">#32FFFFFF</item> 
</style> 

그리고 그와 대화 만들 :이가에 따라 달라질 수 있습니다 생각 https://stackoverflow.com/a/36311627/4344057

관련 문제