我一直在尝试创建一个简单的TabActivity
有 3 个选项卡。所有作品except如果我把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 使用RelativeLayout
代替LinearLayout
在2.0的实现中。
只是为了确保找到图标图像,Log.d
以上显示:
图标:32.32 正如它应该的那样。
为什么从android 2.0到3.0的转变会这样做???我希望其他人也遇到过这种情况,而且这是显而易见的。非常感谢您的帮助!
- 更新:
我今天发现,当我更仔细地观察为 android 3.0+ 构建此代码时实际发生的情况时,我了解到ImageView
是什么时候发生的SetIndeicator(string, drawable)
被称为每个TabSpec
,实际上从未设置过并且实际上是NULL
(ImageView.mDrawable==null
) and INVISBLE
.
如果我强制设置那些可绘制对象,and call ImageView.setVisiblity(View.VISIBLE)
然后他们出现了。然而,在 android 2.0 下,它们与上面的图像和下面的文本堆叠在一起,如下所示:
<image>
<text>
在 android 3.0 下,它们并排出现(当如上所述强制时),如下所示:
<image><text>
因此,事情似乎发生了很大的变化,我需要更仔细地研究 android 3.0 的变化。
请继续关注更多...
-- 最终更新:
最终,我放弃了这条途径,并决定这种做事风格已经改变,也许现在已经被贬值了,还有其他更好的方法可以做到这一点,而且图标风格有点旧。