0

현재 배열 어댑터의 왼쪽에 항목을 그리려하고 있지만 어떤 이유로 일부 프레임 만 사라져 사라진 것처럼 보입니다. 내 어댑터 레이아웃ArrayAdapter에 사용자 정의 뷰 그리기

@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; 
} 

그리고 마지막으로 :

<?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> 
여기

는 용

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); 
    } 
} 

조각 코드입니다

onDraw는 한 번만 호출되며 테스트 중에는 삼각형이 어떻게 든 렌더링됩니다 (재현 할 수 없음 ...). 나는 그것이 ArrayAdapter가 어떻게 작동하는지 도저히 생각해야한다고 생각한다.

감사합니다.

답변

0

시도 생성자

this.setWillNotDraw(false);´ 

추가