問題
私は理解できない奇妙な問題を抱えており、他の目を見る必要があります。ProgressBarビューを動的に作成しましたが、MotorolaXoomを除くさまざまなデバイスとAVDで動作します。
スクリーンショット
すべてのスクリーンショットにはその上にデバイス名があり、超高解像度のために25%であるNexus 10を除いて、ADTを介して取得したものから約50%削減されています。ProgressBarの赤い背景は、デバッグの目的で追加され、ビューがそこにあり、表示されていることを示します。中央に左と上のパディングを追加しました。
以下のスクリーンショットは、Xoomが機能しないところから始まり、Nexus 10(AVD)、Nexus 7、Galaxy Nexus、HTC Droid Incredibleが続き、他のすべての場所で機能していることを示しています。ショットの後に、コードを追加します。
MotorolaXoomが機能しない
プログレスバーが機能しない!ただし、ビューが表示されていることに注意してください(赤い背景が表示されています)。
他のデバイスで正常に動作する
サークルの進行状況は、これらすべてのデバイスで表示されます。
シミュレートされたSamsungNexus10
ASUS Nexus 7
サムスンギャラクシーネクサス
HTC Droid Incredible
今コード
これにより、それを含む親ビューが作成されます。
RelativeLayout discoverListLayout = new RelativeLayout(mContext);
discoverListLayout.setLayoutParams(params);
discoverListLayout.addView(mDiscoverList);
mDiscoverListは、最終的に表示されるリストビューです。リストがロードされるまで、ProgressBarがその上にロードされます。
次に、プログレスバーを作成して設定します。オブジェクトの幅と高さが0であるため、パディングonGlobalLayoutを設定します。
mDiscoverLoading = new ProgressBar(mContext);
params.height = ViewPager.LayoutParams.WRAP_CONTENT;
params.width = ViewPager.LayoutParams.WRAP_CONTENT;
mDiscoverLoading.setLayoutParams(params);
mDiscoverLoading.setIndeterminate(true);
discoverListLayout.addView(mDiscoverLoading);
ViewTreeObserver vto = mDiscoverLoading.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@SuppressWarnings("deprecation")
@Override
public void onGlobalLayout() {
if (mDiscoverList.getCount() > 0) {
processLoadedList(true);
} else {
mDiscoverLoading.setBackgroundColor(getActivity().getResources().getColor(R.color.stitchoid_red));
mDiscoverLoading.setPadding((getView().getWidth() / 2) - (mDiscoverLoading.getWidth() / 2),(getView().getHeight() / 2) - (mDiscoverLoading.getHeight()), 0, 0);
}
ViewTreeObserver obs = mDiscoverLoading.getViewTreeObserver();
obs.removeGlobalOnLayoutListener(this);
}
});
つまり、Motorola Xoomを除いて、すべてがチャンピオンのように機能します!?この問題の解決に役立つ洞察や提案をいただければ幸いです。追加情報を提供する必要があるかどうかをお知らせください。
どうもありがとうございます!
*補遺:おそらくあまり関連性がないが念のために注意する奇妙なこと:ProgressBarの幅をmatch_parentに設定した場合(そして幅のパディングを追加しない場合)、他の場所でも機能しますが、Xoomでは表示されますが幅まで引き伸ばされると歪んでしまいます(xoomのみ)。