Инкрементная непрозрачность, требующая постоянной непрозрачности. Image View with Drawable

Я программно создаю текстовые изображения с горизонтальными линиями между каждым представлением. Использование выделенного программного обеспечения.

Проблема в том, что непрозрачность начинает свет и постепенно увеличивается для каждой линии.

Я выполнил непрозрачность (getAlpha ()) для рисования, рисования, просмотра изображений и линейного макета во всех точках в двух представленных методах, а из чертежей всегда 255 и просмотров 1.0. Я не понимаю, почему он не ведет себя так, как будто это правда. Я также пытался установить Alpha, это не имеет значения.

Почему это делается и как я могу это исправить?

XML:

<LinearLayout android:id="@+id/main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" .../> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="PaintDashedLines" android:text="Press Me"/> </LinearLayout> 

Ява:

 static int tvCount = 0; public void PaintDashedLines(View v) { LinearLayout ll = (LinearLayout) findViewById(R.id.main); TextView tv = new TextView(MainActivity.this); tv.setGravity(Gravity.CENTER); tv.setTextSize(25); tv.setPadding(0, 5, 0, 5); ll.addView(tv); tv.setText("TextView " + tvCount); ImageView divider = new ImageView(MainActivity.this); LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( ll.getWidth(), 2); lp.setMargins(0, 5, 0, 5); divider.setLayoutParams(lp); divider.setBackground(CreateDashedLined()); ll.addView(divider); tvCount++; } public static Drawable CreateDashedLined() { ShapeDrawable sd = new ShapeDrawable(new RectShape()); Paint fgPaintSel = sd.getPaint(); fgPaintSel.setColor(Color.BLACK); fgPaintSel.setStyle(Paint.Style.STROKE); fgPaintSel.setPathEffect(new DashPathEffect(new float[]{5, 10}, 0)); return sd; } 

Введите описание изображения здесь

Solutions Collecting From Web of "Инкрементная непрозрачность, требующая постоянной непрозрачности. Image View with Drawable"

Мне больше нравится проблема с эмулятором. Вы также можете попробовать отключить аппаратное ускорение с помощью

  ll.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 

Пожалуйста, помните также, что вам не нужно создавать экземпляр нового ImageView каждый раз, просто чтобы нарисовать разделитель между TextView s. Вы можете использовать setDivider. Например

В вашем onCreate

 ShapeDrawable sd = new ShapeDrawable(new RectShape()); sd.setIntrinsicHeight(1); Paint fgPaintSel = sd.getPaint(); fgPaintSel.setARGB(255, 0, 0, 0); fgPaintSel.setStyle(Paint.Style.STROKE); fgPaintSel.setPathEffect(new DashPathEffect(new float[]{5, 10}, 0)); LinearLayout linearLayout = (LinearLayout) findViewById(R.id.main); linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE | LinearLayout.SHOW_DIVIDER_END); linearLayout.setDividerDrawable(sd); 

И когда вы нажимаете кнопку

 public void pressMe(View view) { LinearLayout linearLayout = (LinearLayout) findViewById(R.id.main); TextView tv = new TextView(MainActivity.this); tv.setGravity(Gravity.CENTER); tv.setTextSize(25); tv.setPadding(0, 5, 0, 5); tv.setText("TextView " + linearLayout.getChildCount()); linearLayout.addView(tv); } 

Результат

Введите описание изображения здесь