SnackBar 簡單分析

呂福剛 7年前發布 | 6K 次閱讀 安卓開發 Android開發 移動開發

介紹

Snackbars provide lightweight feedback about an operation. They show a brief message at the

bottom of the screen on mobile and lower left on larger devices. Snackbars appear above all other

elements on screen and only one can be displayed at a time.

They automatically disappear after a timeout or after user interaction elsewhere on the screen,

particularly after interactions that summon a new surface or activity. Snackbars can be swiped

off screen.

Snackbars can contain an action which is set via

<p>{@link #setAction(CharSequence, android.view.View.OnClickListener)}.</p>

To be notified when a snackbar has been shown or dismissed, you can provide a {@link Callback} via {@link #setCallback(Callback)}.

翻譯:

Snackbar為用戶的一個操作提供輕量級的反饋,他會在手機屏幕的底部或者是大設備的左下方顯示一個簡潔的消息。Snackbar出現在屏幕所有元素的上面,顯示一小會。

Snackbar顯示一會后會自動消失,用戶點擊其他地方的時候也會消失,尤其,當顯示一個新的界面的時候,Snackbar會滑出界面。

Snackbar 可以通過setAction(CharSequence, android.view.View.OnClickListener) 來設置一個點擊事件,同時也可以通過setCallback(Callback)來監聽snackbar的顯示和消失。

類介紹

Snackbar中Public屬性列表

方法或接口 意義
Callback 抽象函數用來設置SnackBar顯示和消失的回調
make 創建SnackBar
setAction 設置ActionView的響應事件
show 顯示SnackBar
dismiss 收起SnackBar
setActionTextColor 設置ActionView的字體顏色
setText 設置TextView的顯示內容
setDuration 設置SnackBar的顯示時間
getDuration 獲取SnackBar的顯示時間
getView 獲取SnackBar的View視圖
setCallback 設置顯示和消失的事件監聽
isShown 是否已經顯示
shownOrQueued 是否已經顯示或者在隊列中等待顯示

整理而言的話,感覺Snackbar就是Toast的一個升級版本,使用的方式和Toast也比較相似。

創建Snackbar之后一定要記得調用show()方法

具體使用

–代碼內容–

package mraz.com.snackdemo;

import android.os.Bundle; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.RelativeLayout; import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

RelativeLayout rootLayout;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    rootLayout = (RelativeLayout) findViewById(R.id.root_layout);

    Button shortButton = (Button) findViewById(R.id.short_button);
    Button longButton = (Button) findViewById(R.id.long_button);

    shortButton.setOnClickListener(this);
    longButton.setOnClickListener(this);

}

@Override
public void onClick(View view) {
    switch (view.getId()) {
        case R.id.short_button:
            final Snackbar shortSnackbar = Snackbar.make(rootLayout, " Short SnackBar", Snackbar.LENGTH_SHORT);
            shortSnackbar.setAction("Click", new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            Toast.makeText(rootLayout.getContext(), "Shoort Snackbar onClick", Toast.LENGTH_SHORT).show();
                        }
                    }
            );
            shortSnackbar.setActionTextColor(getResources().getColor(R.color.colorPrimaryDark));
            shortSnackbar.show();

            break;

        case R.id.long_button:
            Snackbar longSnackbar = Snackbar.make(rootLayout, " Long SnackBar", Snackbar.LENGTH_LONG);
            longSnackbar.setCallback(new SnackCallback());
            longSnackbar.show();
            break;
    }
}

class SnackCallback extends Snackbar.Callback {
    @Override
    public void onDismissed(Snackbar snackbar, int event) {
        super.onDismissed(snackbar, event);
        Toast.makeText(rootLayout.getContext(), "SnackBar onDismissed", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onShown(Snackbar snackbar) {
        super.onShown(snackbar);
        Toast.makeText(rootLayout.getContext(), "SnackBar onShown", Toast.LENGTH_SHORT).show();
    }
}

}</code></pre>

實際效果

 

來自:http://blog.csdn.net/poorkick/article/details/51814023

 

 本文由用戶 呂福剛 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!