#android #layout #view #transparency
#Android #макет #Вид #прозрачность
Вопрос:
Я пытаюсь создать макет с фоном и добавить вид прокрутки в нижней части этого макета.
вот мой код:
FrameLayout mainLayout = new FrameLayout(getApplicationContext());
mainLayout.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
mainLayout.setBackgroundResource(R.drawable.background2);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(LayoutParams.FILL_PARENT, 200);
params.gravity = Gravity.BOTTOM|Gravity.CENTER;
final ScrollView scrollView = new ScrollView(getApplicationContext());
scrollView.setLayoutParams(params);
scrollView.setBackgroundColor(Color.TRANSPARENT);
StorageView storageView = new StorageView(getApplicationContext());
storageView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
Drawable drawable = getResources().getDrawable(R.drawable.background1);
drawable.setAlpha(0);
storageView.setBackgroundDrawable(drawable);
scrollView.addView(storageView);
mainLayout.addView(scrollView);
setContentView(mainLayout);
почему я вижу только фоновое изображение?
* Редактировать:
Если я удалю весь параметр setBackgroundColor и перемещу параметр setBackgroundDrawable в ScrollLayout или StorageView, я увижу фон на всем экране
* Правка2:
Я редактирую код: удаляю ненужные макеты и устанавливаю фон, который можно прорисовывать, с альфа-значением 0, и теперь это работает.
что ж, я буду рад, если кто-нибудь объяснит мне, зачем мне нужно это делать?
Комментарии:
1. Почему вы не пишете макет в редакторе XML? Сначала сделайте так, чтобы он выглядел прямо там, а затем, если нужно, посмотрите на его динамическое создание.
2. потому что StorageView — это настраиваемый вид, в котором я рисую объекты методом onDraw. поэтому я не могу видеть это в xml
3. Но правильно ли выводится макет над StorageView? Я имею в виду, чтобы это работало до вашего StorageView. Если у вас уже есть, то в этом нет необходимости. 🙂
4. как я упоминал в вопросе, если я установлю для отображения фона StorageView или ScrollLayout, я увижу это
Ответ №1:
Попробуйте это:
findViewById(R.id.v).setBackgroundColor(getResources().getColor(android.R.color.transparent));
Ответ №2:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.Transparent" parent="android:Theme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
</resources>
и затем в манифесте
<activity android:name=".SampleActivity" android:theme="@style/Theme.Transparent">
...
</activity>
Комментарии:
1. @Lukap сэр, как сделать это для фрагмента??
Ответ №3:
Добавьте следующий атрибут
android:background="@android:color/transparent"