4

カスタムアダプタでListView/ExpandableListViewのとbackgroundResourceを設定することは可能ですか?backgroundColor

展開可能なリストビューの各行の境界線として機能する透明なpngがあります。この画像は、内側の影と下部の境界線です。

目標は、次のようなことを行うことです。

png+色

backgroundResourceを設定してからbackgroundColorを設定すると、2つのうち1つだけが表示されます。色をオーバーレイするためのリソースを取得できません。これが可能かどうか誰かが知っていますか?

より良いアイデアを得るための私のコードは次のとおりです。

private int[] colors2= new int[] { Color.parseColor("#e2e8e9"), Color.parseColor("#f1f2f2") };
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
    ViewHolder holder;
    ExpandListGroup group = (ExpandListGroup) getGroup(groupPosition);
    if (convertView == null) {
        holder = new ViewHolder();
        LayoutInflater inf = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
        convertView = inf.inflate(R.layout.expandlist_group_item, null);
        holder.title = (TextView) convertView.findViewById(R.id.tvGroup);
        convertView.setTag(holder);
    }else{
        holder = (ViewHolder) convertView.getTag();
    }
    int colorPos = groupPosition % colors.length; 
    convertView.setBackgroundResource(R.drawable.row_forground);
    convertView.setBackgroundColor(color2[colorPos]);
    holder.title.setText(group.getName());
    return convertView;
}
4

4 に答える 4

9

setBackgroundResourceどちらも内部setBackgroundColorで同じAPIを使用してタスクを実行します。setBackgroundDrawableしたがって、一方が他方を上書きします。したがって、このAPIを使用して目標を達成することはできません。

カスタムドローアブルでsetBackgroundResourceを使用する必要があります

于 2012-08-15T21:28:44.633 に答える
5

setBackgroundResource使用したい場合、setBackgroundColorこれを行うことができます:

...
int colorPos = groupPosition % colors.length;
convertView.setBackgroundResource(R.drawable.row_forground);
GradientDrawable drawable = (GradientDrawable) convertView.getBackground();
drawable.setColor(color2[colorPos]);
...
于 2014-11-28T00:14:41.727 に答える
1

確かに、背景を描画可能にして、それにいくつかの色をペイントすることができるコードがあります。しかし、私は今は身動きが取れません:-)
しかし、あなたがあなたの目標を達成する方法は他にもあります。このサイトを見てください:
http
: //developer.android.com/guide/topics/resources/drawable-resource.html準備できる9patchのドローアブルを見てください。これは、必要に応じて縮小/拡大する小さな画像のみになります。中に他の色を入れて用意します。
2番目の方法は、ShapeDrawableを使用することです。XMLでは、長方形とその中に単色を作成します。
どちらの場合も、必要に応じて背景のドローアブルを交換するだけです。
あなたが何を達成したいのか正確にはわかりませんが、これがお役に立てば幸いです。

于 2012-08-15T21:22:34.177 に答える
0

このように背景リソースをビューに設定した後、ColorFilterを追加するだけです。

view.setBackgroundResource(R.drawable.yourRessource);
view.getBackground().setColorFilter(
                Color.yourColor,
                PorterDuff.Mode.DST_OVER
);

AndroidのColorFilterを使用した画像とDrawableの操作の詳細

于 2019-12-31T15:00:39.837 に答える