Intereting Posts
UIL не поддерживает схему (протокол) по умолчанию. Вы должны реализовать эту поддержку самостоятельно Ширина match_parent не работает в RecyclerView Пустое поле электронной почты пользователя Firebase Auth с использованием функции входа в Facebook (Firebase 3.0) Программная настройка точек паролей в EditText 'Не может найти символьную переменную' в привязке данных к андроиду Пользовательский макет как элемент для представления сетки Предупреждения Android-Studio-1.2.RC Proguard на ссылке библиотеки Okio Square Преобразование String в Uri Отключить сообщения ANR во время отладки Android QRCode Scanner Library SensorEvent.timestamp – абсолютная метка времени (utc)? Возможность отправки смс с использованием Sim1 или Sim2 программно Индивидуальные сбои, полученные на устройствах Samsung только с версиями Lollipop 5.0 и 5.1 Почему я не должен использовать System.out.println () в android Замена пользовательской камеры Android после увеличения

Централизация ProgressBar программно в Android

Я пытаюсь центрировать ProgressBar программно, используя следующее:

 ViewGroup layout = (ViewGroup) findViewById(android.R.id.content).getRootView(); progressBar = newProgressBar(SignInActivity.this,null,android.R.attr.progressBarStyleLarge); progressBar.setIndeterminate(true); progressBar.setVisibility(View.VISIBLE); RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(100,100); params.addRule(RelativeLayout.CENTER_IN_PARENT); layout.addView(progressBar,params); 

Настройка размера, похоже, работает нормально, но ProgressBar не центрируется в существующем макете (определяется xml с относительным расположением). Здесь что-то явно не так?

XML выглядит следующим образом:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".test" android:typeface="monospace"> </RelativeLayout> 

Т.е. это просто пустой относительный макет, с которым нужно проверить, и посмотреть, могу ли я заставить его программно добавить индикатор выполнения.

Благодарю.

Solutions Collecting From Web of "Централизация ProgressBar программно в Android"

Если вы хотите сделать это программно, вы можете сделать это, как показано ниже:

 RelativeLayout layout = new RelativeLayout(this); progressBar = new ProgressBar(SignInActivity.this,null,android.R.attr.progressBarStyleLarge); progressBar.setIndeterminate(true); progressBar.setVisibility(View.VISIBLE); RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(100,100); params.addRule(RelativeLayout.CENTER_IN_PARENT); layout.addView(progressBar,params); setContentView(layout); 

Я написал класс, основанный на ответе @ DharmarajRupakheti:

 public class ProgressBarHandler { private ProgressBar mProgressBar; private Context mContext; public ProgressBarHandler(Context context) { mContext = context; ViewGroup layout = (ViewGroup) ((Activity) context).findViewById(android.R.id.content).getRootView(); mProgressBar = new ProgressBar(context, null, android.R.attr.progressBarStyleLarge); mProgressBar.setIndeterminate(true); RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT); RelativeLayout rl = new RelativeLayout(context); rl.setGravity(Gravity.CENTER); rl.addView(mProgressBar); layout.addView(rl, params); hide(); } public void show() { mProgressBar.setVisibility(View.VISIBLE); } public void hide() { mProgressBar.setVisibility(View.INVISIBLE); } } 

Применение:

 mProgressBarHandler = new ProgressBarHandler(this); // In onCreate mProgressBarHandler.show(); // To show the progress bar mProgressBarHandler.hide(); // To hide the progress bar 

Используйте свое кодирование в этом стиле, это дает желаемый результат.

 ViewGroup layout = (ViewGroup) findViewById(android.R.id.content).getRootView(); progressBar = new ProgressBar(thisActivity,null,android.R.attr.progressBarStyleLarge); progressBar.setIndeterminate(true); progressBar.setVisibility(View.VISIBLE); RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,RelativeLayout.LayoutParams.MATCH_PARENT); RelativeLayout rl = new RelativeLayout(thisActivity); rl.setGravity(Gravity.CENTER); rl.addView(progressBar); layout.addView(rl,params); 

Вам не нужен XML. Вы можете создать представление по коду:

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout layout = new LinearLayout(this); ProgressBar pb = new ProgressBar(this, null, android.R.attr.progressBarStyleLarge); ViewGroup.LayoutParams params = new ViewGroup.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); pb.setLayoutParams(params); layout.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL); layout.addView(pb); setContentView(layout); }