0

ListFragmentを拡張するFragmentがあります。これは、実行時にFrameLayoutに追加されます。FrameLayoutにはすでにImageViewが含まれています。

実行時にListFragmentを追加すると、背景が透けて見えます。代わりに単色が必要です。

main.xml

<?xml version="1.0" encoding="utf-8"?>

<FrameLayout android:id="@+id/list_fragment" 
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@drawable/icon"
        android:tileMode="repeat" />

</FrameLayout>

次のことを試しましたが、スクロールすると黒くなります。

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    getListView().setCacheColorHint(R.color.list_background);
    super.onActivityCreated(savedInstanceState);
}

そして、R.color.list_backgroundには次のようなものがあります。

<color name="list_background">#e2f4c7</color>

以下のスクリーンショットを参照してください。

ここに画像の説明を入力してください

これが私のカスタムアダプターです

public class DailyFlightsAdapter extends ArrayAdapter<DailyFlightVO> {

Context context; 
int layoutResourceId;    
ArrayList<DailyFlightVO> data = null;

public DailyFlightsAdapter(Context context, int layoutResourceId, ArrayList<DailyFlightVO> dailyFlights) {
    super(context, layoutResourceId, dailyFlights);
    this.layoutResourceId = layoutResourceId;
    this.context = context;
    this.data = dailyFlights;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View row = convertView;
    FlightHolder holder = null;

    if(row == null){
        LayoutInflater inflator = ((Activity)context).getLayoutInflater();
        row = inflator.inflate(layoutResourceId, parent, false);

        holder = new FlightHolder();
        holder.distance = (TextView)row.findViewById(R.id.distance);
        holder.pilot = (TextView)row.findViewById(R.id.pilot);

        row.setTag(holder);
    }else{
        holder = (FlightHolder)row.getTag();
    }

    DailyFlightVO vo = data.get(position);
    holder.distance.setText(vo.getDistance());
    holder.pilot.setText(vo.getPilot());

    return row;
}

static class FlightHolder{
    TextView distance;
    TextView pilot;
}
}
4

2 に答える 2

1

getListView().setCacheColorHint(R.color.list_background);次のことを試す代わりに:

getListView().setBackgroundColor(getResources().getColor(R.color.list_background));

setBackgroundColorgetColorのドキュメントも参照してください。getColorリソースIDを実際の色に変換する必要があるため、ここで使用する必要があります。

于 2012-09-28T13:50:46.533 に答える
0

アイテムの背景を設定する必要がありますListView

于 2012-09-27T22:54:09.533 に答える