2013-07-07 9 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। धन्यवाद। Note1: न्यूनतम एसडीके आवश्यक संस्करण 8 है, लक्ष्य नवीनतम (वास्तव में, v17) है।

+0

मुझे लगता है कि इस पर निर्भर हो सकता है: एक संबंधित सवाल का

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

मेरा उत्तर के लिए लिंक एसडीके संस्करण। 1.6 संवाद में डिफ़ॉल्ट रूप से अर्ध-पारदर्शी होते हैं लेकिन 'AlertDialog.builder (संदर्भ संदर्भ, int विषय)' का प्रयास करें, जहां थीम '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)); 

मेरे अन्य समाधान था के लिए इसी तरह "कौशल त्रिवेदी" एक। का उपयोग 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

इस

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; 
} 

प्रयास करें साथ ही आप अपने संवाद के onCreateView में

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

डाल सकता है।

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

संबंधित मुद्दे