Скрытие линейного макета во время выполнения в Android - PullRequest
4 голосов
/ 13 апреля 2011

У меня следующий макет

<merge>
    <LinearLayout
        android:id="@+id/ll_main"
        android:layout_height="fill_parent"
        android:layout_width="fill_parent"
        />
    <LinearLayout
        android:id="@+id/ll_sub"
        android:layout_height="fill_parent"
        android:layout_width="fill_parent"
        />  
</merge>

Я хочу показать / скрыть макет ll_sub во время выполнения через setVisibility(), но он не работает.

Когда я устанавливаю android:visibility="gone" (также я проверял с помощью invisible) из xml ll_sub, тогда он не отображается на экране, и на этот раз, когда я использую setVisibility(), чтобы показать этот макет во время выполнения , он отображается, но когда я пытаюсь скрыть этот макет после его отображения, он не скрывается.

EDIT

Я пытаюсь показать / скрыть эту линейную раскладку одним нажатием кнопки.

LinearLayout ll;
Button minimize;
int visibility=0;

@Override
public void onCreate(Bundle savedInstanceState)
{
    ll=(LinearLayout)findViewById(R.id.ll_sub);
    minimize=(Button)findViewById(R.id.minimize);
    minimize.setOnClickListener(new View.OnClickListener()
    {
        public void onClick(View view)
        {

            if(visibility==0)
            {
                visibility=2;
            }
            else
            {
                visibility=0;
            }
            ll.setVisibility(visibility);

        }
    });
}

Ответы [ 2 ]

16 голосов
/ 13 апреля 2011

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

GONE == 8
INVISIBLE == 4
VISIBLE == 0

Однако вы никогда не должны полагаться на фактические значения, которые Android произошло , чтобы обозначить их константы. Вместо этого используйте значения, определенные в классе View: View.VISIBLE, View.INVISIBLE и View.GONE.

// snip...
if(visibility == View.VISIBLE)
{
    visibility = View.GONE;
}
else
{
    visibility = View.VISIBLE;
}
ll.setVisibility(visibility);

И не забудьте позвонить на номер invalidate() :)

2 голосов
/ 13 апреля 2011

Вы должны использовать константы, предоставленные View

View.INVISBLE, View.VISIBLE, View.GONE

, а также лишить законной силы Ваш взгляд

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...