Я столкнулся с аналогичной проблемой, я хотел, чтобы клиент прошел обход приложения, где весь экран должен был стать белее (как они сказали: «прозрачный»), за исключением кнопки, которая объясняется наложением речевого пузыря.
К счастью для вас, ваш макет не так сложен, как тот, с которым мне приходилось работать :)
Теперь вы можете получить эффект прозрачности двумя способами: либо иметь белый фон, либо вызывать все методы setAlpha () представлений, либо создать полупрозрачный белый наложение.
Если вы используете оверлей, вам нужно будет найти способ отображения непрозрачных кнопок через оверлей. Это может быть немного сложнее.
Если вы выберете первый вариант, вы можете просто установить Alpha (1) на непрозрачном виде, чтобы он появился.
Метод setAlpha () доступен только в API версии 11+, поэтому, если вы ориентируетесь на более раннюю версию, вам, возможно, придется сделать это несколько более сложным способом.
Пример настройки альфа на предварительных сотах:
Макет для ваших кнопок (сделайте их так, как вы хотите, просто сделайте их похожими, чтобы вы могли просматривать их):
<LinearLayout
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:tag="image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/tile"/>
<TextView
android:tag="text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FF000000"
android:text="button1"/>
</LinearLayout>
В вашей программе, когда вы хотите сделать кнопки прозрачными:
LinearLayout l = (LinearLayout) findViewById(R.id.button1);
((ImageView)l.findViewWithTag("image")).setAlpha(0x7F);
((TextView)l.findViewWithTag("text")).setTextColor(0x7F000000);
Когда вы определились с тем, как вы хотите создать эффект прозрачности, вам нужно будет решить, как отобразить оверлейный текст / пузырь. Скорее всего, вы захотите поместить его в отдельный слой поверх всего макета, чтобы быть уверенным, что это не повлияет на ваш новый вид.
Одним из способов достижения этого является изменение корневого элемента макета на FrameLayout, а затем создание / отображение в нем. например:
<FrameLayout background="#FFFF"> <!-- white background, just in case -->
<LinearLayout>
<!-- the rest of your layout -->
</LinearLayout>
<LinearLayout visibility="gone"> <!-- this will be your overlay view -->
<ImageView /> <!-- the arrow/ring -->
<TextView /> <!-- the description -->
</LinearLayout>
</FrameLayout>
Когда отображается введение, вы устанавливаете позицию скрытого наложения в положение элемента таблицы, который нужно объяснить, меняете текст на соответствующую строку / ресурс и отображаете представление.
Когда введение закончится, вы сбрасываете альфа-значения всех кнопок и снова устанавливаете видимость наложения.