當我點擊一個 Android 按鈕時,它會很好地漣漪。我想以編程方式觸發相同的效果。
現在,我使用performClick()并且有效 --- 注冊點擊并呼叫按鈕的 onClick() 代碼。但是,沒有漣漪/UI 變化。我怎樣才能讓它在以編程方式執行點擊時產生漣漪?
布局:
<Button
android:id="@ id/myButton"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="Button" />
代碼:
findViewById(R.id.myButton).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.e("DEBUG", "Saw Click");
}
});
findViewById(R.id.myButton).performClick();
Log.e("DEBUG", "Attempted click");
uj5u.com熱心網友回復:
可以通過呼叫以編程方式在現有按鈕上創建波紋的能力:
myButton.setPressed(true);
myButton.setPressed(false);
在第一個陳述句之后有第二個陳述句是導致漣漪的原因。如果你只有第一個,按鈕會變亮(就像用戶按下它并且不松開)但不會恢復正常。
然后你可以打電話
myButton.performClick();
就像之前一樣。
關閉按鈕聲音也可能會很好,具體取決于是否有另一個按鈕正在觸發呼叫(在這種情況下,如果您不關閉它,您將快速連續聽到兩次點擊的聲音,因為performClick仍然使默認情況下按鈕單擊聲音)。可以使用以下方法關閉聲音:
myButton.setSoundEffectsEnabled(false);
所以完整的序列將是這樣的:
myButton.setSoundEffectsEnabled(false); // One time only is needed
myButton.setPressed(true); // Whenever wanting to make a programmatic click
myButton.setPressed(false);
myButton.performClick();
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/488158.html
