Android: поместите что-нибудь поверх линейного макета - PullRequest
1 голос
/ 10 февраля 2012

Что я хочу сделать, это показать «рамку» (или новый макет) поверх «2» (второй LinearLayout), когда кнопка будет нажата.Как я должен это делать?Подготовьте его и сделайте как-нибудь скрытым, если кнопка не нажата?

У меня есть такой тип макета:

layout

XML:

<LinearLayout>

    <LinearLayout>
    </LinearLayout>

    <LinearLayout>
        //here would be another view, only shown when a button is clicked
        <ViewFlipper>
        </ViewFlipper>
    </LinearLayout>

    <RelativeLayout      
    </RelativeLayout>

</LinearLayout>

Ответы [ 4 ]

5 голосов
/ 10 февраля 2012

Используйте FrameLayout, чтобы показать view перекрытие другого view. Вы можете сохранить представление как INVISIBLE или использовать GONE в xml, а затем просто сделать его видимым при нажатии Button.

2 голосов
/ 10 февраля 2012

Здесь у вас есть два варианта:

Как вы сказали, предварительно создавая макеты и устанавливая видимость Visibility_Gone для первоначальных макетов, которые не будут отображаться, установите Visibitlity на View.Visible для отображения макетов.

Другой подход состоит в том, чтобы динамически создавать представления и добавлять к родительскому элементу по указанному индексу, например, добавлять поверх использования линейного вывода:

linearLayout.addView(view, 0);
2 голосов
/ 10 февраля 2012

Да ... вы должны подготовить его в xml и дать ему идентификатор. Затем вы можете легко управлять его видимостью при нажатии кнопки, используя mLinearLayout.setVisibility(View.GONE); и mLinearLayout.setVisibility(View.VISIBLE);, например:

Button mButton=(Button)findViewById(R.id.button);
LinearLayout ll=(LinearLayout)findViewById(R.id.frame_layout);

static int count=0;
mButton.setOnClick.... (new OnClick...()

          public void onClick(){

              count++;
              if(count==1)             
                   ll.setVisibility(View.VISIBLE);              
              else
              {
                   count=0;
                   ll.setVisibility(View.GONE);
              }
          }        
);
1 голос
/ 10 февраля 2012

Если вы хотите показать какое-либо представление по нажатию кнопки, то сначала поместите это представление в xml и сделайте его видимым, а при нажатии кнопки сделайте его видимым. Я поместил imageview в ваш код, видимость которого отключена, поэтому он не будет отображаться в макете.

<LinearLayout>

    <LinearLayout>
    </LinearLayout>

    <LinearLayout>
        //here would be another view, only shown when a button is clicked
         <ImageView
                        android:id="@+id/image1"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:src="@drawable/icon"
                        android:visibility="gone" />
    </LinearLayout>

    <RelativeLayout      
    </RelativeLayout>

</LinearLayout>

Для отображения видимого изображения,

imag1.seVisibility(View.VISIBLE);
...