2015-02-18 16 views
5

Chciałem, aby jedna z moich czynności wyglądała jak okno dialogowe i używał motywu Theme.AppCompat.Dialog, ale sprawiał, że pasek akcji wyglądał źle (patrz poniżej).Pasek akcji wygląda na wycięty podczas korzystania z Motywu.AppCompat.Dialog

Teraz tło jest cięty na długość napisu tytułowego i cant't znajdę żadnego majątku motyw, aby go naprawić. (

Co można zrobić, aby tego uniknąć?

Podobne część styles.xml:

<style name="DeviceListTheme" parent="Theme.AppCompat.Dialog"> 
    <!-- All customizations that are NOT specific to a particular API-level can go here. --> 
</style> 

rozpocząć działalność za pomocą następującego kodu:

Intent intent = new Intent(this, DeviceListActivity.class); 
startActivityForResult(intent, REQUEST_CONNECT_DEVICE); 
+0

Wklej kod w style.xml i kod aktywności związanej pokazując pasek akcji – Psypher

+0

Czy "Wybierz urządzenie" to tytuł? lub zwykły TextView? –

+0

@JuanjoVega - "Wybierz urządzenie" to tytuł ustawiony w pliku manifest.xml. W żaden sposób nie próbowałem przypisać niestandardowego układu paska akcji. –

Odpowiedz

4

Po pierwsze, gdy napotkałem ten problem, próbowałem użyć supportRequestWindowFeature(Window.FEATURE_NO_TITLE);, ale to nie zadziałało i nie przyniosło efektu.

Alternatywną metodą usunięcia paska u góry okna dialogowego byłoby utworzenie niestandardowego stylu i zastosowanie go do tego działania.

W styles.xml, utworzyć nowy styl tak:

<style name="MyCustomDialog" parent="Base.Theme.AppCompat.Light.Dialog"> 
    <item name="android:windowNoTitle">true</item> 
    <item name="windowActionBar">false</item> 
</style> 

Teraz w AndroidManifest.xml, dodać android:theme="@style/MyCustomDialog" do swojej działalności.

Oczywiście, MyCustomDialog może zostać przemianowane na dowolne.

0

Zastosowanie DialogWhenLarge zamiast standardowego stylu Dialog:

<style name="MyDialogTheme" parent="@style/Theme.AppCompat.Light.DialogWhenLarge"> 
... 
</style> 
0

I rozwiązać ten sam problem w ten sposób:

aktywny:

public class MyActivity extends android.support.v4.app.FragmentActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.my_layout); 
     setTitle("View task"); 
    } 
} 

Skórka:

<style name="Theme.MyDialog" parent="@style/Theme.AppCompat.Light.Dialog"> 
    <item name="android:windowNoTitle">false</item> 
</style> 

Mani fest:

<activity android:name=".MyActivity" android:theme="@style/Theme.MyDialog"/> 

Wynik:

+0

Nic nie dostaję na ekranie! Czy muszę ustawić stały rozmiar? –

+0

Nie, nie powinieneś ustawiać stałego rozmiaru. – wizard

+0

Jak zrobić całą szerokość wtedy? Lub procent ... Albo dodać dopełnienie czy coś takiego? –

0

enter image description here

jego pracy

<style name="AppThemeDialog" parent="Theme.AppCompat.Light.Dialog"> 
     <item name="android:windowNoTitle">true</item> 
     <item name="android:spinnerStyle">@style/holoSpinner</item> 
</style> 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_search); 
     setTitle("Batches"); 
    } 
Powiązane problemy