2012-05-25 4 views
2

나는 3 개의 탭으로 간단한 TabActivity을 만들려고 시도했다. 모든 작품 을 제외하고 매니 페스트 파일에 android:minSdkVersion="11"을 입력하면 아이콘이 표시되지 않습니다. `minSdkVersion = "10"으로 설정하면 모두 잘됩니다.minSdkVersion> 10 인 경우 WidgetTab의 이미지가 표시되지 않는 이유는 무엇입니까?

나는 높고 낮게 보였지만, 무엇이 잘못되었는지를 판단 할 수 없었습니다.
나는 겉으로는 적절한 리소스 디렉토리에 같은 이미지를 넣어 가지고 :

고해상도/당김-hdpi에-V5
고해상도/당김 - LDPI-V5를
고해상도/당김 - MDPI-V5
고해상도/당김-xhdpi-V5

그리고 코드는 간단하다 :

import android.app.TabActivity; 
import android.content.res.Resources; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.ViewGroup.LayoutParams; 
import android.widget.LinearLayout; 
import android.widget.TabHost; 
import android.widget.TabWidget; 

public class Review extends TabActivity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     TabHost tabs = getTabHost(); 
     getLayoutInflater().inflate(R.layout.main, 
            tabs.getTabContentView(), true); 
     Resources resources=getResources(); 
     Log.d("testing", String.format("icon: %d.%d", 
        resources.getDrawable(R.drawable.review).getIntrinsicWidth(), 
      resources.getDrawable(R.drawable.review).getIntrinsicHeight())); 
     TabHost.TabSpec details = tabs.newTabSpec("review"). setContent(R.id.review). 
       setIndicator(getString(R.string.review), 
         resources.getDrawable(R.drawable.review));   
     TabHost.TabSpec gallery=tabs.newTabSpec("gallery").setContent(R.id.photos) 
       .setIndicator(getString(R.string.gallery), 
         resources.getDrawable(R.drawable.photos)); 
     TabHost.TabSpec reservation=tabs.newTabSpec("reservation"). 
      setContent(R.id.reservation) 
       .setIndicator(getString(R.string.reservation), 
         resources.getDrawable(R.drawable.reservation)); 
     tabs.addTab(details); 
     tabs.addTab(gallery); 
     tabs.addTab(reservation);  
    } 
} 

이것을 파헤 치면서 안드로이드 2.0 vs 3.0에서 내부적으로 볼 수있는 유일한 차이점은 안드로이드가 012 구현 된 RelativeLayout 대신 LinearLayout을 사용한다는 것입니다.

그냥 아이콘 이미지는 위의 쇼 Log.d 발견되고 있다는 것을 확신 할 수 있습니다 :

아이콘 : 32.32 예상대로.

왜 안드로이드 2.0에서 3.0으로 변경합니까? 나는 다른 누군가가이 문제에 뛰어 들고 그것이 분명하다는 희망을 가지고 있습니다. 도와 주셔서 대단히 감사합니다!

- UPDATE : 나는 실제로이 코드는 안드로이드 3.0 이상을 위해 만들어진 때 무슨 일이 일어나고 있는지 좀 더 자세히보고로서 내가 오늘 발견

, 나는 사실을 알게 ImageView 'SetIndeicator(string, drawable)가 호출 될 때 나오게의 각각 TabSpec에 대해 실제로 설정되지 않으며 실제로는 NULL (ImageView.mDrawable==null) 및 INVISBLE입니다.

드로어 블을 설정하도록 설정하면 ImageView.setVisiblity(View.VISIBLE)으로 표시됩니다. 그러나 로이드 2.0 하에서 이들은 위의 이미지와 같이 아래의 텍스트 적층 게재 :

: 같이 나란히 (상기와 같이 강제 될 때) 나타나는 로이드 3.0에서

<image>
<text>

<image><text>

따라서 상황이 많이 바뀌었고 Android 3.0의 변경 사항을 신중하게 조사해야합니다.

더 자세히 ...

- 최종 업데이트 : 궁극적으로

, 나는이 길을 포기하고 일을하는이 스타일이 변경 아마도 지금은 감가 상각이 작업을 수행하는 다른 더 나은 방법이 있다는 것을 결정 아이콘은 약간 오래된 스타일이다 .

답변