2017-07-27 25 views
1

在Android中,當我們顯示諸如提示對話框,進度對話框,打開抽屜等內容時,看起來我們在屏幕上有一個透明的黑色圖層,然後是一種對話框中,像這樣的圖片:如何更改Android對話框或抽屜菜單中的黑色

我的目標是改變透明的黑色層,而不是對話的背景,看到這樣的畫面:

enter image description here

如何這個透明的黑色層的顏色更改爲類似紅色還是任何顏色?例如,在XML或Java代碼

這是我MyExitDialog類代碼

public class MyExitDialog extends Dialog implements android.view.View.OnClickListener 
{ 
    DatabaseHandler userDB; 

    public Activity c; 
    public Dialog d; 
    public Button yes, no; 

    public MyExitDialog(Activity a) 
    { 
     super(a); 
     this.c = a; 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(R.layout.mydialog); 
     yes = (Button) findViewById(R.id.id_exit_yes); 
     no = (Button) findViewById(R.id.id_exit_no); 
     yes.setOnClickListener(this); 
     no.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) 
    { 
     switch (v.getId()) { 
      case R.id.id_exit_yes: 
       //c.finish(); 
       DrawerActivity.userDB=new DatabaseHandler(MyExitDialog.this.getContext()); 
       DrawerActivity.userDB.open(); 
       DrawerActivity.userDB.logOut(); 
       DrawerActivity.userDB.close(); 
       DrawerActivity.changeDrawerItems("logout"); 
       break; 
      case R.id.id_exit_no: 
       dismiss(); 
       break; 
      default: 
       break; 
     } 
     dismiss(); 

    } 
} 

,這是我如何使用:

@Override 
public boolean onNavigationItemSelected(MenuItem item) { 
    // Handle navigation view item clicks here. 

    int id = item.getItemId(); 
    Fragment myFragment = null; 

    View myView; 
    Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/BYekan.ttf"); 

    if (id == R.id.nav_home) { 

    } else if (id == R.id.nav_register) { 


    } else if (id == R.id.nav_change) { 

    } else if (id == R.id.nav_login) { 

    } else if (id == R.id.nav_factors) { 

    } else if (id == R.id.nav_logout) { 
     MyExitDialog myDialog = new MyExitDialog(DrawerActivity.this); 
     myDialog.show(); 
    } 
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    drawer.closeDrawer(GravityCompat.START); 
    return true; 
} 
+0

這是什麼'背景:@色/ newbg'? – UmarZaii

+0

@UmarZaii這只是一個提示 – Fanous

+0

在文章中加入對話代碼 – UmarZaii

回答

2

對你AlertDialog,您可以設置自定義主題作爲這樣的第二個參數。

AlertDialog.Builder dialog = new AlertDialog.Builder(context, R.style.CustomDialog); 

而且在style.xml設置customDialog風格

<resources> 
    <style name="CustomDialog" parent="@style/Theme.AppCompat.Light.Dialog.Alert"> 
     <item name="android:background">@color/red</item> 
    </style> 
</resources> 

最後,您可以設置自定義顏色colors.xml

<resources> 
    <item name="blue" type="color">#FF33B5E5</item> 
    <item name="purple" type="color">#FFAA66CC</item> 
    <item name="green" type="color">#FF99CC00</item> 
    <item name="orange" type="color">#FFFFBB33</item> 
    <item name="red" type="color">#FFFF4444</item> 
    <item name="darkblue" type="color">#FF0099CC</item> 
    <item name="darkpurple" type="color">#FF9933CC</item> 
    <item name="darkgreen" type="color">#FF669900</item> 
    <item name="darkorange" type="color">#FFFF8800</item> 
    <item name="darkred" type="color">#FFCC0000</item> 
</resources> 

有足夠的顏色可供選擇。

UPDATE:從

public MyExitDialog(Activity a) 
{ 
    super(a); 
    this.c = a; 
} 

嘗試切換到該

public MyExitDialog(Activity a) 
{ 
    super(a, R.style.CustomDialog); 
    this.c = a; 
} 

清晰的代碼:

以此作爲你的構造。

public MyExitDialog(Activity a, int resID) 
{ 
    super(a, resID); 
    this.c = a; 
} 

然後像這樣在參數裏面添加resID。

MyExitDialog myDialog = new MyExitDialog(DrawerActivity.this, R.style.CustomDialog); 
myDialog.show(); 

UPDATE:

對不起再次給了錯誤的信息。請注意,我沒有使用android:background。改爲android:windowBackground

<resources> 
    <style name="CustomDialog" parent="@style/Theme.AppCompat.Light.Dialog.Alert"> 
     <item name="android:windowIsFloating">false</item> 
     <item name="android:windowBackground">@color/red</item> 
    </style> 
</resources> 

希望它有幫助。

+0

@Fanous查看我的更新代碼。 – UmarZaii

+0

sory,但它並沒有工作呢!它像android:背景 – Fanous

+0

我已經做了一些研究,它看起來像alertDialog和Dialog的父類沒有可以更改scrimcolour的方法。 – UmarZaii

1

要改變你的抽屜疊加背景:

yourDrawerLayout.setScrimColor(Color.RED) 
+0

它是關於抽屜。那麼MyExitDialog呢? – Fanous

相關問題