簡體   English   中英

5秒后如何在android中隱藏嵌套布局?

[英]how to hide a nested layout after 5 seconds in android?

我需要在5秒鍾后隱藏嵌套布局。 我的布局代碼如下,

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/invitation_single"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:divider="?android:dividerVertical"
    android:dividerPadding="5dp"
    android:showDividers="middle"
    tools:context=".MainActivity">

    <ImageButton
        android:id="@+id/image"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:src="@drawable/ic_action_event" />

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="50dp"
        android:layout_weight="1"
        android:clickable="false"
        android:focusable="true"
        android:orientation="vertical">

        <TextView
            android:id="@+id/invitation_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="5dp"
            android:paddingRight="0dp"
            android:paddingTop="3dp"
            android:textColor="@color/black"
            android:textSize="18sp" />

        <TextView
            android:id="@+id/invitation_place"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="5dp"
            android:paddingRight="0dp"
            android:textColor="@color/black"
            android:textSize="15sp" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/hidden"
        android:layout_width="0dp"
        android:layout_height="50dp"
        android:layout_marginLeft="-270dp"
        android:layout_marginTop="60dp"
        android:layout_weight="1"
        android:clickable="true"
        android:focusable="true"
        android:orientation="horizontal"
        android:paddingTop="1dp"
        android:visibility="gone"
        android:weightSum="3">


        <Button
            android:id="@+id/yesbutton"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_marginLeft="7dp"
            android:layout_weight="1"
            android:background="@color/blue"
            android:text="Yes"
            android:textColor="@color/black"></Button>

        <Button
            android:id="@+id/nobutton"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_marginLeft="25dp"
            android:layout_weight="1"
            android:background="@color/blue"
            android:text="No"
            android:textColor="@color/black"></Button>

        <Button
            android:id="@+id/buttonmaybe"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_marginLeft="25dp"
            android:layout_marginRight="10dp"
            android:layout_weight="1"
            android:background="@color/blue"
            android:text="Maybe"
            android:textColor="@color/black"></Button>

    </LinearLayout>


</LinearLayout>

我的編程代碼如下

    final LinearLayout first = (LinearLayout) convertView.findViewById(R.id.invitation_single);


   final LinearLayout second = (LinearLayout) convertView.findViewById(R.id.hidden);

 first.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        switch (v.getId()) {
                            case R.id.invitation_single:
                                //second.setVisibility(View.VISIBLE);
                                second.setVisibility(second.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE);
                                break;

                        }

                    }

當我onclick rootlayout(invitation_single)時,嵌套布局(隱藏)可以在rootlayout的下面立即看到。但是我需要在onclick根布局5秒鍾后隱藏nestedlayout。如何實現這一點..

使用Thread.sleep()

case R.id.invitation_single:
    try {
        Thread.sleep(5000);                 //1000 milliseconds = 1 second.
    } catch(InterruptedException ex) {
        Thread.currentThread().interrupt();
    }
    // EXECUTED LINES AFTER THE 5 SECONDS DELAY GOES HERE!
    //second.setVisibility(View.VISIBLE);
    second.setVisibility(second.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE);

break;

嘗試這個

 case R.id.invitation_single:
                                //second.setVisibility(View.VISIBLE);

Timer timer=new Timer();
timer.schedule(new TimerTask(){
@Override
public void run(){
                                second.setVisibility(second.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE);
                                break;
}}5000);

在特定時間后使用處理程序執行操作:

new Handler().postDelayed(new Runnable() {

            @Override
            public void run() {
                // This method will be executed once the timer is over
                second.setVisibility(second.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE);
            }
        }, 5000);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM