2014-12-28 2 views
0

Я работаю и Googling на некоторое время, и я, кажется, в тупике. Это мнение моего фрагмента:View setView Нечетное поведение

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:orientation="vertical"> 

    <include layout="@layout/swipe_hint" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentTop="true" 
      android:layout_centerHorizontal="true"/> 
    ... other views 
</RelativeLayout> 

Компоновка swipe_hint выглядит так:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:id="@+id/swipe_hint_layout" 
       android:visibility="gone" 
       android:orientation="vertical" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content"> 

    ... more views 

Теперь в Java код, который я пытаюсь изменить альфа независимо следующим образом:

// this fragment's view is the first xml layout above 
View pageOneLayout = fragment.getView(); 
// get the layout of the swipe hint through the fragment's view since it is included 
View swipeView = pageOneLayout.findViewById(R.id.swipe_hint_layout); 

// here is where I run into problems 
pageOneLayout.setAlpha(.25f); 
swipeView.setAlpha(1); 

Установка pageOneLayout alpha to .25 изменяет альфа всей компоновки t o 25% прозрачный, что и следовало ожидать. Однако при настройке альфа для swipeView отдельно он, кажется, не влияет. swipeView по-прежнему .25 прозрачный. Я бы подумал, что установка альфа отдельно, как это приведет к тому, что два представления будут иметь разные уровни прозрачности. Однако, это не так. Может ли кто-нибудь пролить свет на эту тему?

ответ

1

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

Если вы хотите иметь отдельные альфа-уровни, попробуйте использовать FrameLayout.

+0

но не установил бы альфа-перерыв для ребенка этого наследования? –

+0

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

+0

есть способ нарушить наследование, чтобы я мог иметь их на двух разных уровнях альфа-уровня? –

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