2

我一直在尝试TabActivity用 3 个选项卡创建一个简单的。除非我放入android:minSdkVersion="11"清单文件,否则所有工作都不会显示图标。如果我设置 `minSdkVersion="10",一切都很好。

我从高处和低处看了看,但我无法确定哪里出了问题。
我已将相同的图像放在看似合适的资源目录中:

res/drawable-hdpi-v5
res/drawable-ldpi-v5
res/drawable-mdpi-v5
res/drawable-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);    
    }
}

在深入研究这一点时,我可以在 android 2.0 和 3.0 内部看到的唯一区别是 Android在 2.0 实现中 使用 aRelativeLayout而不是 a 。LinearLayout

只是为了确定图标图像被找到,Log.d上面显示:

图标:应该是 32.32。

为什么从 android 2.0 转移到 3.0 会这样????我希望其他人也遇到过这种情况,这很明显。非常感谢您的帮助!

- 更新:

我今天发现,当我更仔细地查看为 android 3.0+ 构建此代码时实际发生的情况时,我了解到当为 each 调用时出现的ImageView's实际上从未设置,实际上是( ) 和. SetIndeicator(string, drawable)TabSpecNULLImageView.mDrawable==nullINVISBLE

如果我强制设置这些可绘制对象,然后调用ImageView.setVisiblity(View.VISIBLE)它们就会出现。但是在 android 2.0 下,它们看起来与上面的图像和下面的文本堆叠在一起,如下所示:

<image>
<text>

在 android 3.0 下,它们并排出现(如上所示),如下所示:

<image><text>

因此,情况似乎发生了很大变化,我需要更仔细地研究 android 3.0 的变化。

请继续关注更多...

-- 最终更新:

最终,我放弃了这条途径,并决定改变这种做事风格,现在可能已经贬值了,还有其他更好的方法可以做到这一点,而且图标有点过时了。

4

1 回答 1

0

奇怪,这解决了问题

    //bmOptions.inSampleSize = 1;
    //or better
    bmOptions.inScaled = false;

更多信息: https ://stackoverflow.com/a/12088287/1320686

于 2013-11-07T07:48:45.640 回答