Диалоговое окно ProgressBar без границ

1

Я показываю ProgressBar в Android, как показано ниже:

Изображение 174551

но вокруг индикатора выполнения есть белая рамка. Что делать, если я не хочу отображать какую-либо границу?

В этом случае в диалоговом окне индикатора выполнения должен отображаться только круг и текст строки выполнения.

Как отобразить индикатор выполнения, как показано ниже? (Как отобразить диалоговое окно выполнения в качестве поиска в следующем изображении:)

Изображение 174551

Update: Мне не удалось найти решение для этого, но я думаю, что здесь должен быть какой-то трюк, чтобы отобразить диалог индикатора прогресса таким образом. Я хочу сказать, что должен быть способ, расширяя некоторые стили в styles.xml. Пожалуйста, кто-нибудь сосредоточится на этом вопросе и поможет мне отобразить такой диалог.

  • 0
    Можете ли вы дать направление? Знаете ли вы, какие стелы используются в этом диалоге? скорее всего, стиль будет определен в классе ProgressDialog или в том, от которого он наследуется. Как только вы узнаете, что можете просто перейти в stles и attr xmls и проверить атрибут, который вы хотите переопределить.
  • 0
    о, почти забыл: 1. если вам нужен код, который у меня есть на моем ПК, хотя он доступен через gitweb ... 2. я бы посмотрел на код самого виджета, большинство chnaces просто использует некоторый drawble, который вы можно взять и использовать в своем виджете, как это делает приложение TripAdvisor. 3. последнее, но не менее важное ;-) попробуйте использовать Android: background = "transparent"
Показать ещё 1 комментарий
Теги:
progress-bar
android-progressbar

3 ответа

3
Лучший ответ

вы можете эту ссылку Как легко подсчитать индикатор прогресса в ProgressDialog (когда заголовок/текст не пройден), вы можете написать ссылку на эту ссылку, я надеюсь, что это поможет вам

2

После некоторых экспериментов я пришел к следующему:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="my_style" parent="@android:style/Theme.Dialog" >
        <item name="android:windowBackground">@null</item>
    </style>
</resources>

Если я использую эту тему как стиль для Activity, я не получаю фрейм. Если вы используете это с конструктором Dialog: Диалог (контекст, тема), вы не получаете фрейма.

1

Вам все еще нужны идеи для этого? Я реализовал то же самое в своем приложении, но не как диалог, у меня было два макета, которые перекрывают друг друга. Затем я переворачиваю между двумя макетами, устанавливая видимость .setVisibility(). Что касается собственно бара выполнения, я использую это:

EDIT: здесь весь мой XML файл:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:background="@drawable/background"> 
     <RelativeLayout android:layout_width="wrap_content" 
    android:layout_height="wrap_content" android:id="@+id/search_header" android:background="@drawable/header">
           <!-- Some things I need for the header (title, etc) -->
     </RelativeLayout>  
    <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" 
     android:id="@+id/spinner_layout" android:layout_below="@+id/search_header" 
     android:layout_centerHorizontal="true" android:layout_centerVertical="true">
     <ProgressBar android:id="@+id/title_progress_bar"
   style="?android:attr/progressBarStyleSmallTitle"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_alignParentRight="true"
   android:layout_centerVertical="true"
   android:visibility="visible"
   android:indeterminateOnly="true"/>
  <TextView android:layout_width="wrap_content" 
   android:layout_height="wrap_content" 
   android:id="@+id/loading_label" android:text="Loading..." 
   android:layout_gravity="center_vertical" android:layout_marginLeft="5dip">
  </TextView>
 </LinearLayout>
 <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" 
  android:layout_below="@+id/search_header" android:id="@+id/list_contents">
  <!-- Stuff you want to show after returning from the AsyncTask -->
 </RelativeLayout>    
</RelativeLayout>

Я использую этот макет для Activity с AsyncTask, поэтому onPreExecute(), я делаю что-то вроде:

@Override
protected void onPreExecute(){
 findViewById(R.id.list_contents).setVisibility(View.GONE);
 findViewById(R.id.spinner_layout).setVisibility(View.VISIBLE);
}

И затем сделайте все, что я должен сделать, и onPostExecute() У меня есть:

@Override
protected void onPostExecute(Cursor cursor){
 findViewById(R.id.list_contents).setVisibility(View.VISIBLE);
 findViewById(R.id.spinner_layout).setVisibility(View.GONE);
}
  • 0
    Привет, спасибо, что сообщили мне еще об одном способе, и все же мне нужно реализовать то же самое, и я не совсем понял вашу идею. Можете ли вы опубликовать весь XML-файл для того же макета?
  • 0
    Я отредактировал свой ответ вчера, чтобы объяснить дальше.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню