我的應用程序中有一個大的「登錄」按鈕。當用戶點擊此按鈕時,我想用'登錄...'替換文本,將其對齊到左側而不是中央,並在右側放置一個旋轉圓圈(但仍在按鈕內)。我想在我的應用程序的其他地方使用基本相同的按鈕(但使用不同的初始和加載文本)。Android - 按下按鈕時旋轉/旋轉「加載」圖像
這樣做最好的方法是什麼?對於實際的旋轉圖形,我打算使用Android附帶的@drawable/spinner_white_16
。
謝謝。
我的應用程序中有一個大的「登錄」按鈕。當用戶點擊此按鈕時,我想用'登錄...'替換文本,將其對齊到左側而不是中央,並在右側放置一個旋轉圓圈(但仍在按鈕內)。我想在我的應用程序的其他地方使用基本相同的按鈕(但使用不同的初始和加載文本)。Android - 按下按鈕時旋轉/旋轉「加載」圖像
這樣做最好的方法是什麼?對於實際的旋轉圖形,我打算使用Android附帶的@drawable/spinner_white_16
。
謝謝。
您可以使用包含TextView和ImageView的RelativeLayout創建自己的按鈕。
<RelativeLayout android:id="@+id/login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
onClick="[yourLoginMethod]" >
<TextView android:id="@+id/login_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="Log In" />
<ImageView android:id="@+id/login_loading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/login_text"
android:visibility="gone" />
</RelativeLayout>
然後在任何您的登錄方法被調用,改變TextView的內容,使其對準父母的權利,而ImageView的可見性設置爲可見。
loginText.setText("Logging In...");
LayoutParams params = loginText.getLayoutParams();
params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
loginText.setLayoutParams(params);
loginLoading.setVisibility(View.VISIBLE);
然後,如果登錄失敗,我還會有一些代碼反轉這些更改。
創建您自己的按鈕,該按鈕將由居中的TextView
和GONE
ImageView
組成。點擊將TextView
移動到左側,並使ImageView
顯示可見的繪圖。
下面是我想出了一個實現,希望它的可重複使用的:
目前,當用戶點擊該按鈕,它會顯示繪製(和動畫),爲你,但你必須手動關閉該加載動畫一旦你與你的後臺任務完成通過:
_progressButton.stopLoadingAnimation();
這將駁回任何您動畫和顯示之前的文本在那裏。唯一缺少在動畫進行時沒有文字的東西,但我認爲你可以一起爲這件事進行破解。我打算進一步擴大這一點,以便它可以讓你打電話給_progressButton.setProgress(10)
,然後設置完成的百分比。我甚至可以讓它安全。
這樣你就不必使用多個佈局,並且在按鈕上面嵌入了任何文字視圖,它的全部都是爲你處理的。