2011-07-19 49 views
1

我需要顯示附加到TextView上的進度環,但它應該是這樣的,它不會阻止用戶點擊其他屏幕組件。像這樣顯示進度對話框附加到textview

enter image description here

任何線索?

+0

你所尋找的是進度,而不是progressdialog。 –

+0

絕對,但它並沒有出現在屏幕上並阻止其他組件,我只是想在textview上。 –

回答

0

這樣的事情是不可能的,只是一個TextView IMO。我想最好的方式來模仿這種效果將是一個LinearLayout Textview和Imageview(水平方向)。最初讓imageview看不見。有條件地切換imageview的可見性。也就是說,當動作開始時,設置可見性,當動作結束時,再次隱藏它。希望你明白。

0

enter image description here一組外佈局的FrameLayout,TextView的/ EditText上和進度內設置(layout gravity "Right")

<FrameLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" > 

    <TextView 
     android:id="@+id/TextView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:paddingRight="24dp" 
     android:text="Getting Location" 
     android:textAppearance="?android:attr/textAppearanceSmall" 
     android:textSize="12dp" > 

     <requestFocus /> 
    </TextView> 

    <ProgressBar 
     android:id="@+id/ProgressBar01" 
     style="?android:attr/progressBarStyleSmall" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="right|center_vertical" 
     android:layout_marginRight="4dp" /> 
</FrameLayout> 

<FrameLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="16dp" > 

    <EditText 
     android:id="@+id/EditText1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:paddingRight="24dp" 
     android:text="http://example.com" 
     android:textAppearance="?android:attr/textAppearanceSmall" 
     android:textSize="12dp" /> 

    <ProgressBar 
     android:id="@+id/progressBar1" 
     style="?android:attr/progressBarStyleSmall" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="right|center_vertical" 
     android:layout_marginRight="4dp" /> 
</FrameLayout> 
1

我做了這樣的事情,但它包括一個圖標爲好。這是爲那些正在尋找這個的人準備好的代碼。

在您的佈局中使用

<LinearLayout 
    android:id="@+id/my_element" 
    android:layout_width="match_parent" 
    android:layout_marginLeft="20dp" 
    android:layout_marginTop="5dp" 
    android:layout_height="20dp"> 

    <ImageView 
     android:layout_width="20dp" 
     android:layout_height="20dp" 
     android:src="@drawable/ic_action_place"/> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="20dp" 
     android:textColor="@color/black" 
     android:textSize="12sp" 
     android:gravity="center_vertical" 
     android:text=""/> 

    <ProgressBar 
     android:layout_width="wrap_content" 
     android:layout_height="20dp" 
     style="@android:style/Widget.ProgressBar.Small" 
     android:layout_marginRight="5dp" /> 

</LinearLayout> 

這是一個包含了TextView的(在前面只是踢一個額外的圖標)和一個小型紡紗進度一個LinearLayout中。

在活動/片段添加

LinearLayout llMyElement; 

在相應的onCreate/onCreateView使用

llMyElement = (LinearLayout) view.findViewById(R.id.my_element); 

在的AsyncTask的onPostExecute或任何你想要的過程調用後設置文本setLoadingText(llMyElement, 「Some Result");

並且包含這個輔助函數,該函數將文本設置到您的Activity類或任何合適的地方,例如Util類。

public void setLoadingText(LinearLayout layout, String text) 
{ 
    int count = layout.getChildCount(); 
    for(int i = 0; i < count; i++) 
    { 
     if(layout.getChildAt(i) instanceof TextView) 
      ((TextView) layout.getChildAt(i)).setText(text); 
     if(layout.getChildAt(i) instanceof ProgressBar) 
      layout.getChildAt(i).setVisibility(View.GONE); 
    } 
} 

就是這樣..享受!

0

把它們放在一個FrameLayout內:

<FrameLayout 
    android:layout_width="0dp" 
    android:layout_height="100dp" 
    android:layout_weight="1"> 
    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@drawable/my_info_card" 
     android:gravity="center" 
     android:layout_gravity="center"/> 
    <ProgressBar 
     android:id="@+id/progress_bar" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     style="@android:style/Widget.ProgressBar.Small" 
     android:layout_gravity="center"/> 
</FrameLayout> 

這樣的ProgressBar出現在TextView。當然,您可以通過setVisibility()隱藏ProgressBar。您也可以通過android:layout_gravity設置每個佈局的重力。在上面的例子中,它看起來是這樣的:

ProgressBar over TextView