gpt4 book ai didi

android - 下方带有水平进度条的工具栏

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:54:41 25 4
gpt4 key购买 nike

在 Android Lollipop 和 AppCompat-v7 中使用新的 Toolbar API,他们删除了许多自动功能以使 Toolbar/ActionBar 更加健壮。其中之一就是进度条。由于 Toolbar 只是一个 ViewGroup,我认为添加 ProgressBar 会很简单。但是,我似乎无法让它正常工作。

我已经完成了以下操作(使用 SmoothProgressBar 库):

    // I instantiate the toolbar and set it as the actionbar
mToolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);

// I create a ProgressBar and set the drawable to the SmoothProgressBar drawable
ProgressBar progressBar = new ProgressBar(this);
progressBar.setIndeterminateDrawable(new SmoothProgressDrawable.Builder(this).color(Color.BLUE).interpolator
(new DecelerateInterpolator()).sectionsCount(4).separatorLength(8).speed(2f).mirrorMode(true).build());
// I add the progressbar to the view with what I thought were the proper LayoutParams.
Toolbar.LayoutParams params = new Toolbar.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 20);
params.gravity = Gravity.BOTTOM;
mToolbar.addView(progressBar, params);
progressBar.setIndeterminate(true);

我认为这会起作用,因为我只是将 ProgressBar 添加到 ViewGroup 的底部。但是,它根本没有显示并且正在删除标题。下面你可以看到一个之前和之后。有谁知道如何解决这个问题?我的目标是在操作栏下方有一个 ProgressBar。

之前 Before picture

之后 After picture

最佳答案

最简单的方法是直接在 XML 布局文件中添加 ProgressBar

1。一次性解决方案

以 root 身份使用 RelativeLayout 并使用 android:layout_below 保留 ProgressBar 和工具栏下方的主要内容。

<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">

<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimaryDark"/>

<fr.castorflex.android.smoothprogressbar.SmoothProgressBar
android:id="@+id/loadProgressBar"
style="@style/LoadProgressBar"
android:layout_width="match_parent"
android:layout_height="4dp"
android:layout_below="@+id/toolbar"
android:indeterminate="true"/>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/toolbar"
android:orientation="vertical">
<!-- Your Content here -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Content Text"/>

</LinearLayout>

</RelativeLayout>

现在你可以在 Activitiy onCreate 方法中访问 ToolbarProgressBar

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar = (Toolbar) findViewById(R.id.toolbar);
progressBar = (SmoothProgressBar) findViewById(R.id.loadProgressBar);
if (toolbar != null) {
setSupportActionBar(toolbar);
}
}

2。使用 include

的一般解决方案

更通用的方法是将 ToolbarProgressBar 放在单独的 XML-Layout 文件中,并将其包含在 Activity 布局中。

toolbar.xml

<merge xmlns:android="http://schemas.android.com/apk/res/android">

<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimaryDark"/>

<fr.castorflex.android.smoothprogressbar.SmoothProgressBar
android:id="@+id/loadProgressBar"
style="@style/LoadProgressBar"
android:layout_width="match_parent"
android:layout_height="4dp"
android:layout_below="@+id/toolbar"
android:indeterminate="true"/>

</merge>

activity_main.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">

<include
layout="@layout/toolbar"/>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/toolbar"
android:orientation="vertical">
<!-- Your Content here -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Content Text"/>

</LinearLayout>

</RelativeLayout>

关于android - 下方带有水平进度条的工具栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26490485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com