この問題は、ランダムなデバイスでのみ発生します。たとえば、私のG Nexusはアイコンを正しく表示しますが、私の友人は正しく表示しません。
特定のピクセル密度のものではなく、すべてのドローアブルを「ドローアブル」フォルダに保存しています。
他のアイコンが正しく表示されます。Drawablesを使用してプログラムで作成したものだけがバグアウトします。
ログキャットは例外をスローしないようです。
何らかの理由で、一部のデバイスでのみ、私が描画しようとしているアイコンが黒い長方形として表示されます。これは、私が最初にDrawableに変換したアイコンでのみ発生します。私が持っているコードは次のとおりです。
public static class GridItem {
public String text;
public Drawable image;
public Intent intent;
public GridItem(String text, Drawable Image, Intent intent) {
this.text = text;
this.image = image;
image.setBounds(0, 0, 160, 160);
this.intent = intent;
}
}
そして、これが私がDrawablesを作成する方法です:
gridItems.add(new GridItem("Schedule", getResources().getDrawable(R.drawable.schedule),
new Intent(this, ScheduleActivity.class)));
そして、これがBaseAdapterクラスです。
public class GridMenuAdapter extends BaseAdapter {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View item = getLayoutInflater().inflate(R.layout.grid_item_layout, null);
item.setPadding(0, 50, 0, 40);
GridItem current = gridItems.get(position);
TextView label = (TextView)item.findViewById(R.id.item_label);
label.setText(current.text);
label.setCompoundDrawables(null, current.image, null, null);
label.setCompoundDrawablePadding(32);
item.setMinimumHeight(300);
return item;
}
@Override
public final int getCount() {
return gridItems.size();
}
@Override
public Object getItem(int position) {
return gridItems.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
}