Sto sviluppando un'applicazione per tablet Android contenente molte attività che utilizzano il tema Theme.Holo.DialogWhenLarge
. Su dispositivi reali (Nexus 7 KitKat e Samsung Galaxy Tab 3 8 ") queste attività vengono visualizzate come previsto, ma su ogni VM Genymotion che provo a creare (Nexus 7 KitKat e Nexus 10 Jelly Bean ad esempio) vengono visualizzate come normali attività a schermo intero.Ho testato anche su un emulatore KitKat Nexus 7 creato con il gestore di dispositivi virtuali Android SDK standard e le attività sono visualizzate come previstoLe macchine virtuali Genymotion visualizzano Theme.Holo.DialogWhen Attività a tema ampio come normali
Posso ignorarlo e suppongo che sia solo un problema con l'emulatore di Genymotion , ma voglio sapere se c'è un modo per risolverlo per avere un ambiente di test migliore. Vorrei sottolineare che il qualificatore di risorsa *-large
funziona sulle macchine virtuali di Genymotion, il problema sembra relativo solo a quel tema.
Per ridurre tutte le possibili cause del problema, ho creato un nuovo progetto di test con un'attività normale normale con un pulsante che avvia un'attività DialogWhenLarge-themed. Ho rimosso anche tutte le librerie di supporto Android e tutti i file di stili XML creati automaticamente da Eclipse: le uniche risorse rimaste sono i due layout per le attività e l'icona di avvio. Questi sono tutti i file del progetto di prova:
src/com/es/testdialogwhenlarge/MainActivity.java
package com.example.testdialogwhenlarge;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends Activity {
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
// Start the DialogWhenLarge-themed activity
startActivity(new Intent(MainActivity.this, TestActivity.class));
}
});
}
}
src/com/es/testdialogwhenlarge/TestActivity.java
package com.example.testdialogwhenlarge;
import android.app.Activity;
import android.os.Bundle;
public class TestActivity extends Activity {
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
}
}
r es/layout/activity_main.xml
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.testdialogwhenlarge.MainActivity">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
</FrameLayout>
res/layout/activity_test.xml
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.testdialogwhenlarge.TestActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
</FrameLayout>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.testdialogwhenlarge"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="19" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="TestDialogWhenLarge"
android:theme="@android:style/Theme.Holo">
<activity android:name="com.example.testdialogwhenlarge.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.example.testdialogwhenlarge.TestActivity"
android:theme="@android:style/Theme.Holo.DialogWhenLarge">
</activity>
</application>
</manifest>
Grazie per le informazioni. Una volta rilasciato (circa?), Dovrei aggiornare Genymotion, le immagini dell'emulatore o entrambe le cose? –
La versione dovrebbe essere tra poche settimane. –
La versione dovrebbe arrivare presto. Se disponi di una licenza a pagamento, proporrà di aggiornare automaticamente un dispositivo virtuale all'avvio. Se si utilizza la licenza "gratuito per uso personale", sarà necessario creare un nuovo dispositivo per utilizzare la correzione. –