我正在开发一个应用程序,当用户点击按钮然后新的活动布局时 将被打开。这个新的布局包含各种视图。
其中一个是邮政编码EditText
。我希望此邮政编码EditText
自动通过GPS
获取用户的邮政编码并填写。为此我想要像这样工作:
EditText
前面会显示一个加载按钮
并通过GPS自动显示。我如何处理第三点,即显示加载,直到用户邮政编码未被提取为止。
答案 0 :(得分:0)
以下面的代码片段为例。你必须填补一些空白。
这是我在我的某个应用ProgressBar
中展示Activities
的方法。它有一个ListView,您必须用自己的内容替换它。
<LinearLayout
android:id="@+id/linlaHeaderProgress"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:orientation="horizontal"
android:visibility="gone" >
<ProgressBar
android:id="@+id/pbHeaderProgress"
style="@style/Spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="2dp" >
</ProgressBar>
<TextView
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:gravity="left|center"
android:padding="2dp"
android:text="Loading...."
android:textSize="20sp" >
</TextView>
</LinearLayout>
<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:cacheColorHint="@android:color/transparent"
android:divider="#000000"
android:dividerHeight="0dp"
android:fadingEdge="none"
android:persistentDrawingCache="scrolling"
android:scrollbars="none" >
</ListView>
现在,在您将此布局映射到Activity
的Java代码中,转换LinearLayout linlaHeaderProgress
。请注意,在XML本身中,android:visibility="gone"
属性设置为"gone"
。
如果您使用AsyncTask获取邮政编码,那么当流程在doInBackground()
中发生时,请通过切换ProgressBar
中linlaHeaderProgress
的可见性来显示onPreExecute()
像这样:
@Override
protected void onPreExecute() {
// SHOW THE PROGRESS BAR (SPINNER) WHILE FETCHING POST DETAILS
linlaHeaderProgress.setVisibility(View.VISIBLE);
}
在onPostExecute()
中,再次切换可见性如下:
@Override
protected void onPostExecute(Void result) {
// HIDE THE PROGRESS BAR (SPINNER) AFTER FETCHING THE POST DETAILS
linlaHeaderProgress.setVisibility(View.GONE);
}
如果您没有使用AsyncTask,而是在Method
中进行处理,请在方法的开头使用:linlaHeaderProgress.setVisibility(View.VISIBLE);.一旦在EditText中显示了邮政编码,就在方法结束时使用它:linlaHeaderProgress.setVisibility(View.GONE);
我全局声明LinearLayout linlaHeaderProgress
,以便我可以在需要的地方重复使用它。如果这有帮助,或者如果您对我有任何其他问题,请告诉我。