我有以下布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res/com.pontai"
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<com.markupartist.android.widget.ActionBar
android:id="@+id/actionbar"
style="@style/ActionBar"
android:layout_marginBottom="3dip"
app:textStyleActionBar="@style/TextViewStyleHeader"
app:title="@string/app_name" />
<com.fb.design.SegmentedButton
android:id="@+id/main_action_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:btnText1="@string/sb_friends"
app:btnText2="@string/sb_search"
app:btnText3="@string/sb_summary"
app:gradientColorOffEnd="@color/segmented_button_off_end"
app:gradientColorOffStart="@color/segmented_button_off_start"
app:gradientColorOnEnd="@color/segmented_button_on_end"
app:gradientColorOnStart="@color/segmented_button_on_start"
app:gradientColorSelectedEnd="@color/segmented_button_selected_end"
app:gradientColorSelectedStart="@color/segmented_button_selected_start"
app:whichButtonIsSelected="0" />
<View
android:layout_width="wrap_content"
android:layout_height="2dp"
android:layout_marginBottom="3dip"
android:background="@drawable/gradient_line" >
</View>
<LinearLayout
android:id="@+id/linearLayout7"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/linearLayout4"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<Button
android:id="@+id/buttonAddFriends"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/ic_input_add"
android:clickable="true"
android:height="40dp"
android:width="40dp" />
<EditText
android:id="@+id/search_box"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="@string/type_here_to_filter"
android:inputType="text"
android:maxLines="1"
android:padding="10dp" >
</EditText>
</LinearLayout>
<LinearLayout
android:id="@+id/loadingPanel"
style="@style/GenericProgressBackground"
android:layout_height="match_parent" >
<ProgressBar style="@style/GenericProgressIndicator" />
</LinearLayout>
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1" />
<TextView
android:id="@id/android:empty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="5dp"
android:text="@string/empty_results" />
</LinearLayout>
</LinearLayout>
My Activity有一个AsyncTask,完成后会执行以下操作:
((LinearLayout)findViewById(R.id.loadingPanel)).setVisibility(View.GONE);
所以,基本上我有一个LinearLayout保持我的ProgressBar,当我有我需要的数据时,我为这个线性布局设置了GONE的可见性。
这可以在我的Galaxy Nexus上找到,但它不能在我的API 8仿真器和Galaxy S2中使用自定义ROM。
有没有人见过这个?
我最糟糕的情况是使用XML中的进度条删除此linearlayout,并在代码中添加ProgressDialog。
此致 菲利普
更新
这就是我定义styles.xml的方法
<style name="GenericProgressBackground" parent="android:Theme">
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">fill_parent</item>
<item name="android:background">#77ffffff</item>
<item name="android:gravity">center</item>
</style>
<style name="GenericProgressIndicator" parent="@android:style/Widget.ProgressBar.Large">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:indeterminate">true</item>
</style>
UPDATE2 我修正了问题
<ProgressBar
android:id="@+id/progressBar1"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
我添加了来自android属性的风格,并且单独工作......我不知道为什么它不能用我创建的风格...它很奇怪。
感谢您的帮助! :)
答案 0 :(得分:4)
使用
的结果是什么<ProgressBar
style="@android:style/Widget.DeviceDefault.ProgressBar.Large"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
答案 1 :(得分:3)
在某些设备上,无法显示进度条,因为在“设置”中&gt;开发者选项 - &gt;过渡动画比例关闭。
将此设置切换为ON(通常为x 1)将使进度条再次出现。
我想有一个正确的解释,但我没有完全回答为什么动画关闭使进度条不起作用。
答案 2 :(得分:2)
当动画关闭时,某些设备上可能会发生这种情况。再次打开你的动画,你应该没事。
答案 3 :(得分:1)
我遇到了同样的问题。我想在我的启动画面上添加一个进度条在xml布局文件中,我能够看到显示在Eclipse预览屏幕上的进度条,但是当我运行代码时,它是看不见的,它让我为一对夫妇疯了几个小时最后,我通过在FrameLayout中添加进度条解决了这个问题,并在不同的RelativeLayout中绘制了初始背景图像,这是FrameLayout的下层子项。我的背景图像是一个9patch图像,所以它可能在运行时覆盖了我的进度条。但这是我的解决方案:
<FrameLayout 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"
android:layout_gravity="center" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/splash" />
<ProgressBar
android:id="@+id/progressBar1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:layout_marginTop="150dp"
android:visibility="visible" />
</FrameLayout>
希望它有所帮助!
答案 4 :(得分:0)
我对此的解决方案是从“相对布局”切换到“线性布局”。工作得很好。下面的代码希望对您有所帮助
activity_main.xml:
<LinearLayout
android:id="@+id/leniar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="0.5"
android:background="@color/colorPrimary"
android:baselineAligned="false"
android:gravity="center"
android:orientation="horizontal"
android:weightSum="3">
<ProgressBar
android:id="@+id/progressBarlite"
style="@style/Widget.AppCompat.ProgressBar"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center"
android:theme="@style/ProgressBarlit" />
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipeContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="0dp"
android:layout_marginBottom="-1dp"
android:background="@color/colorPrimaryDark"
android:visibility="visible">
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true">
</WebView>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</LinearLayout>
是的,我也有WebView和SwipeRefreshLayot,但是我想您可以复制此代码并删除这些段。以及是否想知道如何使进度条显示在屏幕中央:
MainActivity.java:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(R.style.AppTheme);
setContentView(R.layout.activity_main);
this.progressBar = findViewById(R.id.progressBarlite);
mySwipeRefreshLayout =
(SwipeRefreshLayout)this.findViewById(R.id.swipeContainer);
this.webview = findViewById(R.id.webview);
WebViewClientImpl webViewClient = new WebViewClientImpl(this);
webview.setWebViewClient(webViewClient);
webview.setVisibility(View.GONE);
mySwipeRefreshLayout.setVisibility(View.GONE);
public class WebViewClientImpl extends WebViewClient {
private Activity activity = null;
public WebViewClientImpl(Activity activity) {
this.activity = activity;
}
@Override
public boolean shouldOverrideUrlLoading(WebView View, String url) {
//here i set the domains the webview can browse
if (url.contains("ur domain"))
return false;
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
activity.startActivity(intent);
return true;
}
//here i show the progress bar
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
mySwipeRefreshLayout.setVisibility(View.GONE);
progressBar.setVisibility(View.VISIBLE);
webview.setVisibility(View.GONE);
}
//here i hide the progress bar
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
progressBar.setVisibility(View.GONE);
webview.setVisibility(View.VISIBLE);
mySwipeRefreshLayout.setVisibility(View.VISIBLE);
if (mySwipeRefreshLayout.isRefreshing()) {
mySwipeRefreshLayout.setRefreshing(false);
}
}
//here i hide the progress bar and also load a locally saved error messege
@Override
public void onReceivedError(WebView view, int errorCode, String description, String url) {
view.loadUrl("file:///android_asset/error.html");
progressBar.setVisibility(View.GONE);
mySwipeRefreshLayout.setVisibility(View.VISIBLE);
webview.setVisibility(View.VISIBLE);
if (mySwipeRefreshLayout.isRefreshing()) {
mySwipeRefreshLayout.setRefreshing(false);
}
}
public class MediaWebView extends WebView {
public MediaWebView(Context context) {
super(context);
}
public MediaWebView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MediaWebView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onWindowVisibilityChanged(int visibility) {
if (visibility != View.GONE) super.onWindowVisibilityChanged(View.VISIBLE);
}
}
}
}
为此,将进度条和包含它的线性布局都称为“中心”非常重要
<LinearLayout
android:gravity="center"/>
<ProgressBar
android:gravity="center"/>
</LinearLayout>
这是我的styles.xml:
<resources>
<style name="ProgressBarlit" parent="Theme.AppCompat">
<item name="colorAccent">@color/progressback</item>
<item name="android:minWidth">32dp</item>
<item name="android:maxWidth">50dp</item>
</style>
<style name="ProgressBardrk" parent="Theme.AppCompat">
<item name="colorAccent">@color/colorAccentDarkprgress</item>
<item name="android:minWidth">32dp</item>
<item name="android:maxWidth">50dp</item>
<item name="android:minHeight">32dp</item>
<item name="android:maxHeight">100dp</item>
</style>
</resources>
希望它有帮助,我知道它不仅可以回答这个问题,而且您可以在这里找到答案
答案 5 :(得分:0)
我在HTC U11上遇到了一个奇怪的问题,其中我们的省电模式已自动打开,我将其关闭了,但仍然没有显示微调器。
然后我完全关闭了开发人员设置,重新启动了该应用程序,然后开始显示Spinner,希望它可以对某人有所帮助。