0

リストアイテムの背景色が交互になるストライプのAndroidListViewを作成できたと思いました。Theme.Holo.Lightをアプリケーションのテーマとして使用すると(マニフェストで)完全に機能します。ただし、カスタムの背景色を使用してアプリのカスタムテーマを定義すると、ストライプが消え、単一の背景色に置き換えられました。私のテーマで定義されています。 getView()のsetBackgroundColor()でカスタムテーマの背景色を上書きできないのはなぜですか?この問題を解決するにはどうすればよいですか? ありがとう!

更新:アプリケーションの背景がビューの背景の前にレンダリングされていることに気づきました!(また、レイアウトのProgressBarの前で、完全に隠されています。)@ color / background_colorを完全に透明に設定すると、縞模様が透けて見えます。では、問題は、なぜ私のテーマの背景がいくつかのビュー/背景の前にレンダリングされるのかということです。

テーマ:

<style name="Basic">
    <item name="android:textColor">#000000</item>
    <item name="android:background">@color/background_color</item>
</style>

getView():

@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LinearLayout itemView;
        Resources res = getResources();
        int[] colors = new int[] {res.getColor(R.color.list_stripe_1),res.getColor(R.color.list_stripe_2)};
        if (convertView == null){
            itemView = new LinearLayout(getContext());
            String inflater = Context.LAYOUT_INFLATER_SERVICE;
            LayoutInflater viewInflater;
            viewInflater = (LayoutInflater)getContext().getSystemService(inflater);
            viewInflater.inflate(resource, itemView, true);
        } else {
            itemView = (LinearLayout) convertView;
        }

        ////Omitting code for populating TextViews..

        itemView.setBackgroundColor(colors[position%colors.length]);
        return itemView;            
    }   
4

1 に答える 1

0

テーマで android:background を設定する代わりに、android:windowBackground を設定します。テーマ セットの背景を setBackgroundColor() でオーバーライドできない理由、または android:background を使用するとスピナーが見えなくなり、代わりに windowBackground を使用すると問題が解決した理由を十分に調査していません。

于 2012-07-09T19:00:29.467 に答える