天道酬勤,学无止境

使用一个进度条下载多个文件 java / Android(Download multiple files with one progressbar java / Android)

问题

我在 for() 循环的帮助下在 AsyncTask 中下载多个文件。 下面的代码工作正常,但下载的每个文件都有自己的单个进度条,我只希望所有下载的文件有一个进度条。

// ProgressDialog for downloading images
@Override
protected Dialog onCreateDialog(int id) {
    switch (id) {
        case progress_bar_type:
            pDialog = new ProgressDialog(this);
            pDialog.setMessage("Downloading file. Please wait...");
            pDialog.setTitle("In progress...");
            pDialog.setIndeterminate(false);
            pDialog.setMax(100);
            pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            pDialog.setCancelable(true);
            pDialog.show();
            return pDialog;
        default:
            return null;
    }
}

下面是下载文件的 AsyncTask ..

class DownloadFileFromURL extends AsyncTask<String, Integer, String> {
        /**
     * Before starting background thread Show Progress Bar Dialog
     * */
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        showDialog(progress_bar_type);
    }

    /**
     * Downloading file in background thread
     * */
    @Override
    protected String doInBackground(String... f_url) {
        int count;
        try {

            for (int i = 0; i < f_url.length; i++) {
                URL url = new URL(f_url[i]);
                URLConnection conection = url.openConnection();
                conection.connect();
                // getting file length
                int lenghtOfFile = conection.getContentLength();

                // input stream to read file - with 8k buffer
                InputStream input = new BufferedInputStream(
                        url.openStream(), 8192);
                System.out.println("Data::" + f_url[i]);
                // Output stream to write file
                OutputStream output = new FileOutputStream(
                        "/sdcard/Images/" + i + ".jpg");

                byte data[] = new byte[1024];

                long total = 0;
                int zarab=20;

                while ((count = input.read(data)) != -1) {
                    total += count;
                    // publishing the progress....
                    // After this onProgressUpdate will be called
                    publishProgress((int) ((total * 100)/lenghtOfFile));

                    // writing data to file
                    output.write(data, 0, count);
                }

                // flushing output
                output.flush();

                // closing streams
                output.close();
                input.close();
                //cc++;
            }
        } catch (Exception e) {
            Log.e("Error: ", e.getMessage());
        }

        return null;
    }

    /**
     * Updating progress bar
     * */
    protected void onProgressUpdate(Integer... progress) {
        // setting progress percentage
        pDialog.setProgress(progress[0]);
    }

    /**
     * After completing background task Dismiss the progress dialog
     * **/
    @Override
    protected void onPostExecute(String file_url) {
        // dismiss the dialog after the file was downloaded
        dismissDialog(progress_bar_type);

        // Displaying downloaded image into image view
        // Reading image path from sdcard
        //String imagePath = Environment.getExternalStorageDirectory()
        //      .toString() + "/downloaded.jpg";
        // setting downloaded into image view
        // my_image.setImageDrawable(Drawable.createFromPath(imagePath));
    }

}

或者,如果 Progressbar 显示和升级关于文件数意味着而不是 lenghtOfFile 它也将是替代和有用的解决方案。 任何帮助将不胜感激。

回答1

我认为你有两个选择:

假进度条方法

您事先知道需要下载多少个文件,您可以将ProgressDialog total amount 设置为要下载的文件数。 这对于小且尺寸相似的文件非常有效,并为用户提供有关正在发生的事情的良好反馈。

// you can modify the max value of a ProgressDialog, we modify it
// to prevent unnecessary rounding math.
// In the configuration set the max value of the ProgressDialog to an int with
pDialog.setMax(urls.length);

for (int i = 0; i < urls.length; i++) {
    // launch HTTP request and save the file
    //...
    // your code 
    //...

    //advance one step each completed download
    publishProgress();
}

/**
 * Updating progress bar
 */
protected void onProgressUpdate(Integer... progress) {
    pDialog.incrementProgressBy(1);
}

真正的进度条方法

您需要提前知道需要下载的所有文件的总长度。 例如,您可以创建一个单独的 REST API 以在开始下载每个单独文件之前为您提供以字节为单位的总长度的所有其他内容之前调用。 通过这种方式,您可以根据已下载的总字节数定期更新总ProgressDialog长度。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 在ListView Android中使用进度条下载多个文件(Download multiple files with a progress bar in ListView Android)
    问题 我想创建一个ListView ,它允许用户下载许多文件并在每个ListView项目中显示进度栏状态。 看起来像这样: 下载ListView有一些规则: 每个下载任务都显示在一个ListView项中,并带有进度条,百分比和当前状态(下载,等待,完成)。 最多允许5个下载任务,其他任务必须等待用户可以取消下载任务,并将其从ListView删除 ListView在下载活动中。 用户可以更改为其他活动。 他们离开后,继续在后台下载。 当它们回来时,显示下载任务的当前进度和状态。 保留已完成的下载任务,直到用户要删除它们为止。 我试图在Service使用ThreadPoolExcutor 。 对于每个下载任务,我都可以完成百分比,但是我不知道如何将它们广播到适配器以显示进度。 而且我不知道如何使所有任务在后台运行,然后在包含ListView的活动处于活动状态时发布进度并保持已完成的任务如果有任何库或示例可以解决我的问题,那就太好了。 提前致谢! P / S:我已经搜索了类似的问题,但是找不到该问题的解决方案,因此我必须详细创建自己的问题。 因此,请不要将其标记为duplicate 。 谢谢。 回答1 这是一个工作示例,请看一下。 启动应用程序,按“后退”按钮,然后再次返回以测试启动另一个“ Activity并返回的情况。 确保为您的IntentService获取PARTIAL_WAKE
  • 使用AsyncTask下载图像(Download images with AsyncTask)
    问题 我不太确定我的代码或结构出了什么问题。 我想使用AsyncTask下载图像并同时显示进度条。 但是我尝试了几种不同的方法。 它仍然失败了,不知道这是怎么回事。 我的结构流程是 ContentID是一个字符串数组,用于存储图像的内容ID。 主要问题:它设法从url下载图像并将其存储到手机中,但是下载的图像都是相同的图像。 应该是不同的图像,这不是我所期望的。 次要问题:在应用程序下载图像时,进度条弹出,但是进度条没有更新进度。 它仅保留0%,并在下载完成后将其关闭。 我想知道是什么原因引起了我提到的主要和次要问题。 如果您可能知道我的代码有什么问题,请发表评论或回答。 任何帮助将不胜感激。 if(isSyncSuccess){ SetConstant.IMAGE_EXIST = 1; pDialog = new ProgressDialog(GalleryScreen.this); pDialog.setMessage("Downloading file. Please wait..."); pDialog.setIndeterminate(false); pDialog.setProgress(0); pDialog.setMax(contentId.length); pDialog.setProgressStyle(ProgressDialog.STYLE
  • 列表视图中的多个文件下载管理器+进度/暂停/恢复android(Multiple file download manager in listview +progress/pause/resume android)
    问题 我需要以这种形式为我的应用程序创建动态下载管理器: 向当前列表添加新链接可以暂停并继续下载从自定义列表中删除完整的下载像这样 首先,我使用此站点代码进行线程下载。 然后,我创建一个自定义列表视图,每当用户单击“下载”按钮时,将添加该下载链接。 但是我有两个问题: 在将新链接添加到列表之后,所有列表都是新的! 同样,以前未完成的下载将是新的,因为列表将是新的! 现在,问题是:我如何为我的应用程序创建一个动态下载管理器,该应用程序可以添加具有暂停/恢复功能的新链接到列表,并从自定义列表中删除下载的项目? 编辑-添加Custom-Listview 我在此链接中的自定义列表视图:https://github.com/saeid-pm/Custom-Listview 回答1 终于在大约1年后(:D),这是最好的解决方案之一: 通过添加到带有库的项目来使用此库, 或具有Android Studio依赖项: dependencies { compile 'com.mani:ThinDownloadManager:1.3.0' } 它是最好,最快的(任何)文件下载库之一,使用和定制也是如此简单。 例如在我的问题(在1年前)中, i wanted to have Multiple-File-Download ,可以轻松地通过以下方式指定线程池大小: ThinDownloadManager
  • Android 一个接一个下载多个文件并在 ListView 中显示进度(Android Download Multiple Files one after another and show progress in ListView)
    问题 用户可以添加任意数量的下载,但下载会一个接一个开始,即下一次下载只有在当前下载完成后才会开始。 用户将离开显示下载进度的活动以添加新的下载,当添加新的要下载的文件时,应用程序导航回显示下载进度的活动,它将显示下载进度,以前添加,并将当前添加的文件保留为待下载。 下载完成后,挂起的下载将开始下载。 通过这种方式,用户可以添加任意数量的下载,并且它们将一个接一个地开始。 我想在后台连续下载它们 - 一个接一个。 我想在 ListView 中显示进度和状态。 所以,ListView 看起来像: File1 ...in Progress 说 39% 文件 2....待定 文件 3... 待处理 文件 4... 待处理 回答1 我建议使用 IntentServices: public class FileDownloader extends IntentService { private static final String TAG = FileDownloader.class.getName(); public FileDownloader() { super("FileDownloader"); } @Override protected void onHandleIntent(Intent intent) { String fileName = intent
  • 如何使用android DownloadManager下载多个文件,使其出现在一个队列中(How to download multiple files with android DownloadManager so that it appears in one queue)
    问题 我正在使用 DownloadManager 下载文件。 我知道如何下载一个文件并使用 request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); 或不。 但是我有多个文件在某种意义上“属于”在一起,所以我想为这些文件设置一个“队列”,并以一种显示“队列”进度的方式显示通知(假设我添加了5 个文件到队列中,所以它会在第一个文件下载后显示 20%,在其中 2 个文件后显示 40%,...) 文件的顺序并不重要,但我希望能够在下载队列的最后一个文件时在 BroadcastReceiver 的 onReceive() 函数中进行检测。 到目前为止,我设法做的最接近的是不使用 request.setNotificationVisibility,通过匹配 onReceive() 中的 downloadId 来计算下载的文件,并在下载最后一个文件时执行我需要执行的操作。 有没有办法让它更“可见”?
  • 在活动中显示下载管理器进度(Show Download Manager progress inside activity)
    问题 我在活动中使用了Download Manager类来执行下载; 它工作正常,我的下一个任务是在我的活动中显示相同的进度百分比。 我不确定该怎么做。 到目前为止我的代码 public class DownloadSampleBook extends Activity{ private long enqueue; private DownloadManager dm; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sample_download); BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(action)
  • 带下载进度条的启动画面(Splash Screen with Download Progress Bar)
    问题 因此,我在从 Internet 下载 2 个 xml 文件时遇到了进度条作为启动画面的问题。 到目前为止一切顺利,对我来说一切正常 - 但此时我不知道如何继续。 我的目标是让用户在启动屏幕上“等待”,直到应用程序完成下载。 我尝试将类中的 int "lenghtOfFile" 传递给我的主活动。 对我来说无论如何都行不通。 在下载东西时,将我的进度条也基于线程似乎不是正确的方法。 所以现在我正在考虑将 Downloader 作为 AsyncTask 放在 MainActivity 的末尾 - 但是对于 2 个单独的文件,是否有任何经典的方法可以进行两次下载? 之后,获得一个从 0 -100 开始的进度条而不是两个从 0-100 开始计数的进度条是不是很棘手? *** 更新 好的,我得到了启动画面和 TextView,它在下载第一个文件后更新。 那么,我现在如何以尽可能少的代码获得第二次下载? 我可以使用任何“while”或其他东西来做到这一点吗? 我如何实现 splashTread.start() 是否正确? 在 onPostExecute() 上? 我希望我的启动画面在下载完成后退出 可选:我可以使用 0 - 100% 的下载状态更新我的 TextView 吗? 公共类 Splashscreen 扩展了 Activity { final String urlone =
  • 使用Android下载文件,并在ProgressDialog中显示进度(Download a file with Android, and showing the progress in a ProgressDialog)
    问题 我正在尝试编写一个易于更新的简单应用程序。 为此,我需要一个简单的函数,该函数可以下载文件并在ProgressDialog显示当前进度。 我知道如何执行ProgressDialog ,但是我不确定如何首先显示当前进度以及如何下载文件。 回答1 有许多下载文件的方法。 接下来,我将发布最常见的方式; 由您决定哪种方法更适合您的应用。 1.使用AsyncTask并在对话框中显示下载进度 通过此方法,您可以执行一些后台进程并同时更新UI(在这种情况下,我们将更新进度条)。 进口: import android.os.PowerManager; import java.io.InputStream; import java.io.OutputStream; import java.io.FileOutputStream; import java.net.HttpURLConnection; 这是一个示例代码: // declare the dialog as a member field of your activity ProgressDialog mProgressDialog; // instantiate it within the onCreate method mProgressDialog = new ProgressDialog(YourActivity.this)
  • 如何在Android中使用IntentService同时下载多个文件?(How to download multiple files concurrently using intentservice in Android?)
    问题 我想创建一个与此服务类似的服务(从此处引用),以在Android中异步下载多个文件。 public static class DownloadingService extends IntentService { public static String PROGRESS_UPDATE_ACTION = DownloadingService.class .getName() + ".newDownloadTask"; private ExecutorService mExec; private CompletionService<NoResultType> mEcs; private LocalBroadcastManager mBroadcastManager; private List<DownloadTask> mTasks; public DownloadingService() { super("DownloadingService"); mExec = Executors.newFixedThreadPool( 3 ); // The reason to use multiple thread is to download files asynchronously. mEcs = new ExecutorCompletionService<NoResultType>
  • 下载小文件时如何在Javascript中显示进度条?(How to display a progress bar in Javascript while downloading a tiny file?)
    问题 我编写了以下函数来处理 Ajax 请求以获取数据; var xhr = createCORSRequest('GET', url); if (!xhr) { alert('CORS not supported'); return; } xhr.onload = function() { var txt1 = xhr.responsetxt1; var heading = getheading(txt1); if (heading == 'PASS') { var file = "My_URL" + ".js"; downloadFile(file); //My code to display a progress bar here? } else { //Logic to handle failure to load } }; 这是我的downloadFile函数来下载文件。 但是,我不明白如何: 检查下载是否完成。 显示进度条以显示进度。 如果您可以添加对其工作原理的描述,那就太好了。 谢谢。 function downloadFile(fileName) { (function(d) { var ref = d.getElementsByTagName('script')[0]; var js = d.createElement('script'); js.src =
  • Android:从服务器下载文件并使用 AsyncTask 在通知栏中显示下载进度(Android: download file from server and show the download progress in the notification bar using AsyncTask)
    问题 我正在使用此示例使用AsycTask从服务器下载文件并在通知栏中显示下载进度。 我刚刚修改了doInBackground方法以下载我的文件: @Override protected Void doInBackground(String... Urls) { //This is where we would do the actual download stuff //for now I'm just going to loop for 10 seconds // publishing progress every second try { URL url = new URL(Urls[0]); URLConnection connection = url.openConnection(); connection.connect(); // this will be useful so that you can show a typical 0-100% // progress bar int fileLength = connection.getContentLength(); // download the file InputStream input = new BufferedInputStream(url.openStream()); OutputStream
  • 如何在Android的异步类中显示FTP下载中的进度条?(How to show the progress bar in FTP download in async class in Android?)
    问题 如何在Android中的异步类中显示FTP下载中的进度条? 我已经尝试了很多事情,但是没有得到进度条。 这是我的代码,我从其他Activity调用该类,并将该活动的上下文传递给此类。 package com.scft; import it.sauronsoftware.ftp4j.FTPClient; import it.sauronsoftware.ftp4j.FTPDataTransferListener; import java.io.File; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.os.StrictMode; import android.util.Log; import android.widget.PopupWindow; import android.widget.Toast; public class ftpdownload_class { static final String FTP_HOST= "**************"; /********* FTP USERNAME ***********/ static final String FTP
  • 如何在片段中使用异步任务进行下载进度对话框?(How to use Asynchronous task for download progress dialog in fragment?)
    问题 在我的应用程序中,当我点击文件时,它将开始从服务器下载,进度将显示在手机状态栏中。但我希望进度条显示在我的应用程序屏幕上。 我点击了这个链接:- http://www.androidhive.info/2012/04/android-downloading-file-by-showing-progress-bar/ 在接近问题陈述时,我遇到了这些SYSTEM_DOWNLOADER和APP_DOWNLOADER 。 这些究竟是做什么的? 上面的例子是在活动中调用的。我想知道如何使用片段中的下载进度条调用异步任务。 我正在编辑问题以供澄清,请帮忙 convertView.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { MoodleModule module = listObjects.get(position).module; if (module == null) return; Intent i = new Intent(context, AppBrowserActivity.class); String modurl = module.getUrl(); String courseurl = session.getmUrl() + "/course
  • Android应用内更新下载APK和安装
    无意中发现项目本身使用的DownloadManager下载内部更新有问题,无法正常下载,记录一下解决问题的过程。 使用DownloadManager import android.app.DownloadManager; import android.app.ProgressDialog; import android.content.Context; import android.content.IntentFilter; import android.database.ContentObserver; import android.database.Cursor; import android.net.Uri; import android.os.Environment; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.View; import com.fourszhan.dpt.utils.Constant; import com.fourszhan.dpt.utils.SpUtil; import com.fourszhan.dpt.utils.ToastUtil; import com.fourszhan.dpt.utils
  • Android - 下载文件时显示进度条(Android - Displaying a progress bar while downloading a file)
    问题 我需要帮助。 我一直在寻找几天来试图找到解决我的问题的方法。 我想在 Android 中下载文件时显示进度条。 我找到了足够的下载文件,但一直在努力弄清楚如何显示进度条。 这是我的下载代码: String sURL = getString(R.string.DOWNLOAD_URL) + getString(R.string.DATABASE_FILE_NAME); HttpClient httpclient = new DefaultHttpClient(); HttpGet httpget = new HttpGet(sURL); HttpResponse response = httpclient.execute(httpget); HttpEntity entity = response.getEntity(); Header[] clHeaders = response.getHeaders("Content-Length"); Header header = clHeaders[0]; int totalSize = Integer.parseInt(header.getValue()); int downloadedSize = 0; if (entity != null) { InputStream stream = entity.getContent()
  • 使用struts2和Ajax下载文件时如何放置进度栏(How to put progress bar when downloading file using struts2 and Ajax)
    问题 我无法放置进度栏,因为它直接重定向页面并下载了文件。 回答1 一个问题中有那么多问题(其中大多数是隐性的)! 使用struts2和Ajax下载文件时如何放置进度栏 如果不需要,请不要使用AJAX下载。 在浏览器中打开文件时( contentDisposition: inline ),只需使用新的Tab(/ Window)。 当您下载文件( contentDisposition: attachment )时,当前页面不会受到影响。 您可以在此答案中找到几种方法来执行此操作,例如: <s:url action="downloadAction.action" var="url"> <s:param name="param1">value1</s:param> </s:url> <s:a href="%{url}" >download</s:a> 如何放置浏览器进度条? 每个浏览器都有一个内置的进度条,下载文件时会显示该进度条: 仅在未提供要下载文件的长度的情况下,浏览器才能绘制进度条。 要指示浏览器,您可以使用contentLength标头,该标头也可以直接在Stream结果中使用: <result name="success" type="stream"> <param name="contentType">image/jpeg</param> <param name=
  • 异步下载多个文件,并等待所有文件完成后再执行其余代码(Download multiple files async and wait for all of them to finish before executing the rest of the code)
    问题 我正在尝试从Internet下载多个文件,并等待所有文件完成。 这是我正在运行的C#控制台应用程序,因此不需要进度条事件处理程序。 但是,即使尚未下载所有文件,它目前仍继续执行代码。 1.下载所有文件! 2.完成下载文件A 3.完成下载所有文件! 4.完成下载文件B 5.完成下载文件C 您将如何等待所有异步下载文件完成。 private void DownloadMultipleFiles(List<DocumentObject> doclist) { foreach(var value in doclist){ try { using (WebClient webClient = new WebClient()) { string downloadToDirectory = @Resources.defaultDirectory + value.docName; webClient.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials; webClient.DownloadFileCompleted += client_DownloadFileCompleted; webClient.DownloadFileAsync(new Uri(value.docUrl),
  • 如何使用Javascript下载,压缩和保存多个文件并获得进度?(How to download, zip and save multiple files with Javascript and get progress?)
    问题 我正在创建一个Chrome扩展程序,该扩展程序需要从网站下载多个文件(图片和/或视频)。 这些文件的大小可能很大,因此我想向用户显示下载进度。 经过一些研究,我发现当前可能的解决方案可能是: 使用XMLHttpRequests下载所有文件。 下载后,使用JavaScript库(例如JSZip.js,zip.js)将所有文件压缩到一个存档中。 使用“另存为”对话框提示用户保存zip。 我被第二章困住了,如何压缩下载的文件? 要理解,下面是一个代码示例: var fileURLs = ['http://www.test.com/img.jpg',...]; var zip = new JSZip(); var count = 0; for (var i = 0; i < fileURLs.length; i++){ var xhr = new XMLHttpRequest(); xhr.onprogress = calculateAndUpdateProgress; xhr.open('GET', fileURLs[i], true); xhr.responseType = "blob"; xhr.onreadystatechange = function () { if (xhr.readyState == 4) { var blob_url = URL
  • linux工具之curl与wget高级使用
    1、curl(文件传输工具)常用参数如下:-c,--cookie-jar:将cookie写入到文件-b,--cookie:从文件中读取cookie-C,--continue-at:断点续传-d,--data:http post方式传送数据-D,--dump-header:把header信息写入到文件-F,--from:模拟http表达提交数据-s,--slient:减少输出信息-o,--output:将信息输出到文件-O,--remote-name:按照服务器上的文件名,存在本地--l,--head:仅返回头部信息-u,--user[user:pass]:设置http认证用户和密码-T,--upload-file:上传文件-e,--referer:指定引用地址-x,--proxy:指定代理服务器地址和端口-w,--write-out:输出指定格式内容--retry:重试次数--connect-timeout:指定尝试连接的最大时间/s使用示例:例1:抓取页面到指定文件,如果有乱码可以使用iconv转码# curl -o baidu.html www.baidu.com # curl –s –o baidu.html www.baidu.com |iconv -f utf-8 #减少输出信息例2:模拟浏览器头(user-agent)# curl -A "Mozilla/4.0
  • 如何在进度条上显示刻度线?(How do I display tick marks on a Progress Bar?)
    问题 我正在下载一组文件,我想在进度条中显示进度。 通过将进度条的最大值设置为所有文件的总大小,并将当前位置设置为到目前为止下载的大小,可以很简单地显示整体进度。 我想要做的是将进度条分成多个部分,每个部分代表集合中的不同文件。 这可能吗? 我该怎么做? 回答1 我认为最简单的方法是创建一个 UserControl,在其上放置一个 ProgressBar,覆盖 UserControl 的 OnPaint() 并绘制线条。 我认为 UserControl 会比直接在表单上绘制更容易处理。 坐标会更容易处理,而且在另一个应用程序中重用它会更容易。 回答2 如果您知道要下载的文件的总大小,并且您知道到目前为止下载的文件的总大小,那么您可以将 .Maximum 设置为文件的总大小,将 .Position 设置为到目前为止下载的总大小. 无需担心文件之间的大小如何分配。 或者你的意思是你想要根据每个文件的大小在进度条上打勾? 回答3 将最大值设置为 100。然后对于下载的每个文件执行 100*(file_size/total_download_size) 并将它们加在一起。 将它们的值加在一起后,设置进度条的值。 每次文件下载完成时更新该值。 回答4 您可以使用两个进度条,一个用于每个文件,一个用于总数。 或者,如果您想要刻度线:简单的解决方案是在该栏下方或上方添加一些线条。