我不明白为什么某些元素的渲染方式不同。这是一个模拟的ActionBar,我在其中放置了一个 Spinner 来更改在线状态。然而,微调器中的文本在 Desire HD (2.3.5) 和 Nexus 7 (4.2.2) 上可见,但在 LG P990 (4.0.4) 上当前微调器项目不可见我设置了实际位置带有一个绿色矩形。
这是我的代码,我在其中稍微操作了 Spinner,以便文本可读:
IcsSpinner status = (IcsSpinner)content.findViewById(R.id.status);
OnlineAdapter adapter = new OnlineAdapter(status.getContext());
status.setAdapter(adapter);
status.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(IcsAdapterView<?> parent, View v, int position, long id) {
TextView tv = (TextView)parent.getChildAt(0);
tv.setTextSize(12);
tv.setPadding(0, 0, 0, 0);
}
public void onNothingSelected(IcsAdapterView<?> parent) {
}
});
顺便说一下,上面的代码片段中的默认 Spinner 看起来是一样的,我使用的是 ActionBarSherlock 的后端端口。
我尝试使用:
tv.setPadding(0, -12, 0, 0);
这对于 ICS 设备看起来不错,但在 GB 和 JB 上看起来不太好。
这是什么原因?
如何检测是否需要更正位置?