Je suis actuellement en train d'essayer de dessiner un élément sur la gauche sur mon adaptateur de tableau mais pour une raison quelconque, il semble apparaître seulement pour quelques images avant de disparaître.Dessin d'une vue personnalisée dans un ArrayAdapter
est ici le code pour ...
ArrowView
public class ArrowView extends View {
private Path path;
private Paint paint;
private void init() {
path = new Path();
paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(ContextCompat.getColor(getContext(), R.color.white));
paint.setStyle(Paint.Style.FILL);
}
public ArrowView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
path.setFillType(Path.FillType.EVEN_ODD);
path.moveTo(0, 0);
path.lineTo(0, getHeight());
path.lineTo(getWidth(), getHeight()/2);
path.lineTo(0, 0);
path.close();
canvas.drawPath(path, paint);
Log.d("arroview", "onDraw called");
}
@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, widthMeasureSpec);
}
}
Mon fragment:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
ViewGroup rootView = (ViewGroup) inflater
.inflate(R.layout.fragment_first_use_get_started, container, false);
Button button = (Button) rootView.findViewById(R.id.leave_first_time_screen_button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getActivity().finish();
}
});
ListView listView = (ListView) rootView.findViewById(R.id.get_started_list_view);
listView.setAdapter(new ArrayAdapter<>(getContext(), R.layout.adapter_get_started, R.id.get_start_description_text_view, functionalityStrings));
listView.setDividerHeight(0);
listView.setEnabled(false);
return rootView;
}
Et enfin, ma mise en page de l'adaptateur:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:layout_height="match_parent"
android:orientation="horizontal">
<com.example.ArrowView
android:layout_width="0dp"
android:layout_weight=".25"
android:layout_height="match_parent" />
<TextView
android:id="@+id/get_start_description_text_view"
android:layout_weight=".75"
android:layout_width="0dp"
android:layout_height="wrap_content" />
</LinearLayout>
L'onDraw est appelée une seule fois, et plusieurs fois au cours de mes tests, les triangles ont été restitués (ne peuvent pas être reproduits ...). Je soupçonne qu'il doit doter de la façon dont le ArrayAdapter fonctionne?
Merci!