2012-02-07 3 views
1

Я сражаюсь с этим кучей часов, и я не могу понять, что происходит. У меня есть приложение с несколькими вкладками. Эти вкладки управляются TabGroupActivity. Внутри одной из этих вкладок я должен начать прозрачную деятельность. Если я начал нормально (с startActivity), он выглядит хорошо, но, очевидно, панель вкладок не доступна для кликов. Видно из-за прозрачности, но не «достижимой». Таким образом, чтобы сделать панель вкладок невыполнимой, мне нужно «startChildActivity», метод, определенный для просмотра через действия внутри определенной вкладки. НО, когда я это делаю, активность показана, но вместо прозрачности фон черный. Я пробовал все, но я не вижу, как я могу это исправить. Ниже приведен код, где я думаю, что проблема может быть решена, потому что это единственная разница между началом активности и дочерней активностью.Прозрачная детская деятельность с черным фоном

Внутри «основной» деятельности я загрузит все вкладки, каждая вкладка имеет активность, связанную глядя, как это:

public class PreShowTabGroupActivity extends TabGroupActivity { 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      startChildActivity("PreshowActivity", new Intent(this, PreshowActivity.class)); 
     } 
    } 

Деятельность, которая должна быть прозрачна один открыл «PreshowActivity».

Ниже приведен метод startChildActivity внутри класса TabGroupActivity. У меня есть мои попытки сделать это прозрачным, без везения.

public void startChildActivity(String Id, Intent intent) { 
    Window window = getLocalActivityManager().startActivity(Id,intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)); 

    if (window != null) { 

     //window.set 
     mIdList.add(Id); 
     navController.notifyActivityChange();   
     setContentView(window.getDecorView()); 
     window.getAttributes().alpha = 0; 
     window.getDecorView().setBackgroundColor(Color.TRANSPARENT); 
     window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 

    } 
} 

Странная вещь, что если я ставлю цвет фона (например, красный или любой другой), на фоне изменений в этот цвет. Но если я настрою его прозрачно, фон BLACK.

В моем манифесте я пробовал как прозрачные, так и полупрозрачные темы, но не повезло.

Если вы можете мне помочь, я полностью его оцениваю.

Спасибо!

+0

Не может быть, что за ним стоит фон, черный, и он действительно прозрачный, поэтому вы видите черный фон позади него? – AJcodez

+0

Я, хотя это, но я уверен, что это не так, потому что я сделал следующий тест в методе «startChildActivity»: я установил фон decorView как RED, а затем фона фона TRANSPARENT и вместо того, чтобы показывать RED назад, он показывает ЧЕРНЫЙ фон. – DiamondGerace

ответ

0

Прошу прощения за использование слова «угадывание» здесь, но это больше похоже на образованную «догадку». У меня была аналогичная проблема, когда я не мог понять, почему черный фон был показан как прозрачный. Если бы я изменил этот черный цвет на RED, например, он отобразил бы красный цвет. Это связано с свойством окна, называемым форматом. Если вы изменили это свойство windo, выполните следующие действия:

window.getAttributes(). Format = PixelFormat.TRANSLUCENT;

Это означает, что черный фон фактически будет прозрачным. Теперь, в связи с вашим вопросом, мое «обоснованное предположение» заключается в том, что startChildActivity принимает свойства окна своего родительского окна, а startActivity создает окно с другим набором свойств (возможно, TRANSLUCENT).

Смежные вопросы