2012-11-26 2 views
3

Android 2.3 용으로 원래 제작 된 앱이 있습니다. 이제 ActionBarSherlock이 포함 된 ActionBar를 추가하고 있으며, Nexus 7에서 4.2를 실행하는 경우를 제외하고는 모두 버튼과 EditText에 Holo 테마를 사용하고 있습니다. 내 테마가 Theme에서 상속 받기 전에. Light and now 이제 Theme로부터 상속 받고있어. Sherlock. 새로운 기기에서도 이전 테마를 사용하고 싶습니다. 나는이이 값-V14 폴더에 다음 줄에 의해 발생 된 것으로 의심 :이 문제를 해결하는 것입니다 경우 바로 볼 수 테마를 사용하지 않고 테마를 사용하기 위해 ActionBarSherlock을 사용하여 앱을 강제 실행합니다 .Holo

<style name="Sherlock.__Theme" parent="android:Theme.Holo"> 

그래서 내가 그 폴더와 V11 폴더를 제거했지만, 다음 액션 바는 도망 갔어요 완전히.

그때 나는이 같은 글고의 스타일을 재정의하는 시도 :

위젯이 Widget.Holo 테마를 사용하고 정기적으로 테마를 사용하지 했어야하지만 작동하지 않았다
<style name="AppTheme" parent="Theme.Sherlock"> 
    <item name="@android:attr/editTextStyle">@android:style/Widget.EditText</item> 
</style> 

.

ABS를 사용하는 중에 Android 4.0 이상 기기가 홀로 테마 대신 원래 테마를 사용하도록하려면 어떻게해야합니까? 나는 현재 홀로을 보여주는 ABS를 사용하여 샘플 응용 프로그램에 대한 몇 가지 코드를 게시 한 아래

은 글고 테마하지만 일반 글고을 표시해야합니다

MainActivity.java :

import android.os.Bundle; 

import com.actionbarsherlock.app.SherlockActivity; 
import com.actionbarsherlock.view.Menu; 

public class MainActivity extends SherlockActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getSupportMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    } 
} 

activity_main. XML :

<RelativeLayout 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" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:text="@string/hello_world" 
     tools:context=".MainActivity" /> 
    <EditText 
     android:layout_height="match_parent" 
     android:layout_width="match_parent"/> 

</RelativeLayout> 

styles.xml :

<resources xmlns:android="http://schemas.android.com/apk/res/android"> 

    <style name="AppTheme" parent="Theme.Sherlock"> 
     <item name="@android:attr/editTextStyle">@android:style/Widget.EditText</item> 
    </style> 

</resources> 

또한 매니페스트의 테마는 AppTheme이고 ABS는 라이브러리 프로젝트로 추가됩니다.

답변

0

내 수정이 작동하지 않는 이유는 Widget.EditText의 배경 특성이? attr 구문을 사용했기 때문입니다. 즉, 현재 테마의 배경 인 Holo를 사용했기 때문입니다. 그래서 필자는 Android 소스를 살펴본 후이 구문을 사용했던 두 가지 속성을 이전 Holo 테마 스타일 (예 : 배경을 흰색으로 설정)으로 변경해야한다고 다시 변경했습니다.

+0

나는 똑같은 문제에 직면하고있다. 어떻게 고쳐야 할지를 정교하게 설명해 주겠다. –

2

이것은 ActionBarSherlock이 원인이 아니며, EditTextButton 테마는 실행중인 플랫폼 (이 경우 4.2)에서 정의됩니다. EditTextsButtons도 UI 스킨 (TouchWiz, Sense, MotoBlur 등)에 따라 다르게 보일 수 있습니다.

사용자가 익숙하고 3.x +에서 2.x 테마를 사용하지 못하게되므로 Holo 테마를 지원하는 장치에 보관하는 것이 좋습니다.

또한, Sherlock 테마 중 하나가 ActionBarSherlockaccording to the docs 사용하기 위해 필요합니다 Theme.Sherlock, Theme.Sherlock.Light를 사용해야합니다 응용 프로그램을 작동하려면 사용자 정의 작업 표시 줄 구현을 위해서는

을, 또는 Theme.Sherlock.Light.DarkActionBar 또는 사용자 정의 테마는 위에서 설명한 부모 중 하나를 사용해야합니다.

당신이 정말로 Buttons 및 기타 Widgets에 대한 2.X 모양을 원하는 경우

난 당신이 테마를 파생 셜록 중 하나에 2.X의 스타일/드로어 블을 모두 복사 한 다음이를 무시해야합니다 생각합니다. Chris Versieux가 HoloEverywhere으로 수행 한 작업을 살펴보고 모든 작업을 2.x처럼 보이게하려고 할 수도 있습니다. 그러나이 작업을 강력히 권장합니다.

관련 문제