0

アイテムのリストをレンダリングするためListViewに、独自の を使用しています。BaseAdapterアイテムをハイリストすることが可能です。私がそうするとき、私はこのように背景を設定しますBaseAdapter:

if (position == selectedItem) {
    convertView.setBackgroundResource(R.color.mylightcyan);
} else {
    convertView.setBackgroundResource(0);
}

これは非常にうまく機能しますが、(アイテムを編集するためのいくつかのボタンがあります)View内の s がconvertView少し透明に見えることを除いて、 がgetAlpha()返されます1.0

含まれている の背景を明示的に設定すると、Button希望どおりにレンダリングされます。このアルファのような動作を「削除」するにはどうすればよいですか?

私が得るもの: ここに画像の説明を入力

私が欲しいもの: ここに画像の説明を入力

4

1 に答える 1

0

これは、android がボタンのデフォルト リソースとして使用する *.9.png ファイルが透過性を持つためです (ボタン自体は半透過性です)。したがって、アルファを 0 に設定しても、元の画像自体と同じくらい不透明になります。

1 つの方法 (退屈ではありますが) は、リスト内のすべてのスタイル (ボタン、スイッチなど) のカスタム drawables/xml を作成し、それらをプロジェクトに含めることです。

代わりに、ハッキーなことを行うことができます: BaseAdapter の各要素 (ボタン、スイッチなど) を線形レイアウトでラップし、それらの線形レイアウトの背景をリスト内の同じ背景に設定します。このようにして、ボタンのすぐ後ろに不透明な背景があり、ハイライトの色がマスクされます。

于 2013-05-22T18:21:33.903 に答える