2013-10-28 2 views
3

Я пытаюсь сделать следующее:TextView с фоном и прозрачный текст

enter image description here

В настоящее время я пытаюсь использовать NativeAndroid.

Однако, я могу сделать это с помощью HTML и css.

Как вы можете видеть, это что-то вроде:

  • держатель с синим (может быть любой другой цвет или даже IMAGE) фон
  • TextView с (прозрачный ??) цвет
  • TextView с серым фоном

Однако, если я устанавливаю фон в серый и текст прозрачным, текст «исчезает», и все это отображается как серый.

Это моя попытка (Native Android):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#ff000000" > 
<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="#ffcecece" 
    android:padding="5dp" 
    android:text="@string/hello_world" 
    android:textColor="#00ffffff" /> 
</RelativeLayout> 

Однако он показывает следующее:

enter image description here

Там же текст, бушель, как он прозрачен, это не показано.

Так что мой вопрос:

  • Как я могу добиться этого?
  • Холст? Пролеты? Я не привык к такому подходу, поэтому некоторые направления будут оценены.

Спасибо!

Редактировать: Этот синий фон должен быть динамическим, и это может быть ИЗОБРАЖЕНИЕ!

+1

Будет ли у вас динамический фон? Если вы не просто установите цвет текста в цвет фона. – Losiowaty

+0

Фон, скорее всего, изображение ... Итак, это динамично – Reinherd

+0

Я отредактировал свой вопрос. Пожалуйста, просмотрите комментарий для редактирования. – Reinherd

ответ

3

вы можете использовать Canvas для этого:

Bitmap bmOverlay = Bitmap.createBitmap(1200, 1200, Bitmap.Config.ARGB_8888);//bMap.getConfig()); 

Canvas canvas = new Canvas(bmOverlay); 
canvas.drawColor(Color.LTGRAY); 
Paint paint = new Paint(); 

Paint mPaintText = new Paint(Paint.ANTI_ALIAS_FLAG); 
mPaintText.setStrokeWidth(3); 
mPaintText.setStyle(Paint.Style.FILL_AND_STROKE); 
mPaintText.setColor(Color.TRANSPARENT); 
mPaintText.setTextSize(50f); 
mPaintText.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC));  
canvas.drawText("Your TExt", x, y, mPaintText); 
+1

Я не использую использование холста. Как добавить этот код в виде представления? – Reinherd

+0

вы можете добавить ImageView в свой макет, а затем: ImageView image = (ImageView) getActivity(). FindViewById (R.id.imageView1); image.setImageBitmap (bmOverlay); – Dima

+0

Я пробовал это и текст, если он прозрачен, он невидим, поэтому он не работает. – Reinherd

1

Установите textcolor в макете backgound цвета, как светло небо голубое ..

0

Вы не можете достичь этого в Xml макете, вам нужно установить такой же цвет как для фона макета и текста, как показано ниже:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#0011ff" > 
<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="#ffcecece" 
    android:padding="5dp" 
    android:text="@string/hello_world" 
    android:textColor="#0011ff" /> 
</RelativeLayout> 
+0

Не то, что мне нужно. Проверьте мое Редактирование. – Reinherd

+0

Вы можете сделать это в своем классе Java, где хотите, установив backgroundResource следующим образом: mRelativeLayout.setBackgroundResource (R.drawable.imagename); – jyomin

+0

Это не про изображение. Речь идет о настройке текста прозрачным, поэтому вы можете прочитать «через» TextView – Reinherd

Смежные вопросы