2013-06-27 52 views
1

我有一個小應用程序,應該使用系統默認主題。然而,我遇到了兩個問題:Android主題在不同活動上的問題

首先,在一個Activity(TemplateView)上Android不應用主題 - 或者與應用程序的其餘部分完全不同。其次,配置視圖上的按鈕不受主題的影響。

我不以編程方式觸摸按鈕和東西。唯一的問題是spinners的ArrayAdapter,它使用了andoird.R.layout.simple_spinner_dropdown_item,如果我沒有弄錯,它也應該是主題。

我一直在試圖弄清楚,這裏有什麼問題,但我似乎無法找到它。

我的清單

<uses-sdk android:minSdkVersion="10" 
     android:targetSdkVersion="17" /> 

    <uses-permission android:name="android.permission.VIBRATE" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@android:style/Theme" > 
     <activity 
      android:name="de.isogon.discotalker.viewController.ConfigurationController" android:theme="@android:style/Theme"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity><activity android:name="de.isogon.discotalker.viewController.TemplateController"></activity> 
     <activity android:name="de.isogon.discotalker.viewController.AboutController"></activity> 
     <activity android:name="de.isogon.discotalker.viewController.DisplayController"></activity> 

    </application> 

</manifest> 

ConfigurationView(通常主題除了按鍵/紗廠)

<de.isogon.discotalker.views.ConfigurationView 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" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" > 

    <TextView 
     android:id="@+id/tv_configHeader" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:text="@string/label_configuration" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <AutoCompleteTextView 
     android:id="@+id/actv_text" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/tv_configHeader" 
     android:layout_marginTop="10dp" 
     android:completionThreshold="1" 
     android:dropDownHeight="wrap_content" 
     android:dropDownWidth="match_parent" 
     android:ems="10" 
     android:hint="@string/hint_text" > 
    </AutoCompleteTextView> 

    <ScrollView 
     android:id="@+id/scrollView_main" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_above="@+id/btn_start" 
     android:layout_below="@+id/actv_text" > 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" > 

      <!-- Speed --> 

      <LinearLayout 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginBottom="5dp" 
       android:orientation="horizontal" > 

       <TextView 
        android:id="@+id/tv_speed" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_gravity="left|center_vertical" 
        android:layout_weight="1" 
        android:text="@string/label_speed" /> 

       <SeekBar 
        android:id="@+id/sb_speed" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_gravity="right|center_vertical" 
        android:layout_weight="1" /> 
      </LinearLayout> 

      <!-- Size --> 

      <LinearLayout 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginBottom="5dp" 
       android:orientation="horizontal" > 

       <TextView 
        android:id="@+id/tv_size" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_gravity="left|center_vertical" 
        android:layout_weight="1" 
        android:text="@string/label_size" /> 

       <SeekBar 
        android:id="@+id/sb_size" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_gravity="right|center_vertical" 
        android:layout_weight="1" /> 
      </LinearLayout> 

      <!-- Text Color --> 

      <LinearLayout 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginBottom="5dp" 
       android:orientation="horizontal" > 

       <TextView 
        android:id="@+id/tv_textColor" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_gravity="left|center_vertical" 
        android:layout_weight="1" 
        android:text="@string/label_textcolor" /> 

       <Spinner 
        android:id="@+id/sp_textcolor" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_gravity="right|center_vertical" 
        android:layout_weight="1" /> 
      </LinearLayout> 

      <!-- Text Backgroundcolor --> 

      <LinearLayout 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginBottom="5dp" 
       android:orientation="horizontal" > 

       <TextView 
        android:id="@+id/tv_textBackgroundColor" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_gravity="left|center_vertical" 
        android:layout_weight="1" 
        android:text="@string/label_textbackgroundcolor" /> 

       <Spinner 
        android:id="@+id/sp_textBackgroundcolor" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_gravity="right|center_vertical" 
        android:layout_weight="1" /> 
      </LinearLayout> 

      <!-- Backgroundcolor --> 

      <LinearLayout 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginBottom="5dp" 
       android:orientation="horizontal" > 

       <TextView 
        android:id="@+id/tv_backgroundcolor" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_gravity="left|center_vertical" 
        android:layout_weight="1" 
        android:text="@string/label_backgroundcolor" /> 

       <Spinner 
        android:id="@+id/sp_backgroundcolor" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_gravity="right|center_vertical" 
        android:layout_weight="1" /> 
      </LinearLayout> 

      <!-- Endless --> 

      <LinearLayout 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginBottom="5dp" 
       android:orientation="horizontal" > 

       <TextView 
        android:id="@+id/tv_endless" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_gravity="left|center_vertical" 
        android:layout_weight="1" 
        android:text="@string/label_endless" /> 

       <RelativeLayout 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" > 

        <CheckBox 
         android:id="@+id/cb_endless" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_alignParentRight="true" 
         android:layout_gravity="right|center_vertical" /> 
       </RelativeLayout> 
      </LinearLayout> 

      <!-- Vibrate/Sound --> 

      <LinearLayout 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginBottom="5dp" 
       android:orientation="horizontal" > 

       <TextView 
        android:id="@+id/tv_afterRun" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_gravity="left|center_vertical" 
        android:layout_weight="1" 
        android:text="@string/label_afterRun" /> 

       <Spinner 
        android:id="@+id/sp_afterRun" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_gravity="right|center_vertical" 
        android:layout_weight="1" /> 
      </LinearLayout> 
     </LinearLayout> 
    </ScrollView> 

    <Button 
     android:id="@+id/btn_start" 
     android:layout_height="wrap_content" 
     android:layout_width="fill_parent" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="5dp" 
     android:text="@string/button_start" /> 

</de.isogon.discotalker.views.ConfigurationView> 

TemplateView(主題完全地不同 - 我不知道爲什麼)

<de.isogon.discotalker.views.TemplateView 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" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" > 

    <TextView 
     android:id="@+id/tv_templatesHeader" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginBottom="10dp" 
     android:text="@string/label_templates" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     /> 

    <ListView 
     android:id="@+id/lv_templateList" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/tv_templatesHeader" 
     android:layout_above="@+id/rl_containerButtons"> 

    </ListView> 

    <LinearLayout 
     android:id="@+id/rl_containerButtons" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:layout_alignParentBottom="true"> 
     <Button 
      android:id="@+id/btn_edit" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:text="@string/button_edit" 
      android:layout_weight="1"/> 
     <Button 
      android:id="@+id/btn_delete" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:text="@string/button_delete" 
      android:layout_weight="1"/> 
    </LinearLayout> 
</de.isogon.discotalker.views.TemplateView> 
+0

您是否嘗試更改清單中的主題? – TharakaNirmana

+0

是的,我試過默認(@android:style/Theme)和它的亮/黑變體 - 雖然外觀改變了,但這兩個問題都沒有改變。 – Sadragos

+0

這可能是由於這個:de.isogon.discotalker.views – TharakaNirmana

回答

1

問題是,我使用getContext()方法來膨脹第一個View和getApplicationContext()來使另一個View成爲infalte。

0

我有類似的問題使用ListView的ArrayAdapter擴展 - 解決方法是使用MyActivity.this上下文而不是getApplicationContext()或getContext()方法。

0

有類似的問題有關AppCompat v22。

這些活動必須擴展AppCompat主題(而不是Activity)的AppCompatActivity(我的例子中的材質)以應用於它們。