我的应用程序上有一个很大的“登录”按钮。当用户点击此按钮时,我想用“登录...”替换文本,将其对齐左侧而不是中心,并在右侧放置一个旋转圆圈(但仍在按钮内)。我想在我的应用程序的其他地方使用基本相同的按钮(但初始和加载文本不同)。
最简洁的方法是什么?对于实际的旋转图形,我打算使用@drawable/spinner_white_16
Android 自带的。
谢谢。
我的应用程序上有一个很大的“登录”按钮。当用户点击此按钮时,我想用“登录...”替换文本,将其对齐左侧而不是中心,并在右侧放置一个旋转圆圈(但仍在按钮内)。我想在我的应用程序的其他地方使用基本相同的按钮(但初始和加载文本不同)。
最简洁的方法是什么?对于实际的旋转图形,我打算使用@drawable/spinner_white_16
Android 自带的。
谢谢。
您可以使用包含 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);
如果登录失败,我还会有一些代码可以逆转这些更改。
这是我想出的一个实现,希望它可以重用:
目前,当用户单击按钮时,它将为您显示可绘制对象(和动画),但是一旦您通过以下方式完成后台任务,您将不得不手动关闭加载动画:
_progressButton.stopLoadingAnimation();
这将为您关闭任何动画并显示那里的任何先前文本。唯一缺少的是动画正在进行时没有文本,但我认为你可以为此破解一些东西。我计划进一步扩展它,以便它允许你调用类似的东西_progressButton.setProgress(10)
,然后设置完成的百分比。我什至可以让它线程安全。
这样您就不必使用多个布局并在按钮顶部嵌入任何文本视图,所有这些都为您处理。
创建您自己的按钮,该按钮由居中的TextView
和组成GONE
ImageView
。单击后TextView
向左移动并使ImageView
您的drawable可见。