我正在尝试做什么:
>我想在Android应用程序中实现Seekbar,在Seekbar上我还要显示最大值和最小值.最小值始终为0,但最大值取决于剪辑长度. (例如:0 — 180)
>有没有办法显示用户移动Seekbar时选择的值(在搜索栏本身上)?
我无法弄清楚,如何与androID Seekbar一起实现这一点,因为似乎没有任何可用于显示值的选项.
解决方法:
I would like to implement a seekbar in an AndroID App. But on the
seekbar I would also like to display the max and min values. Min value
would always be 0 but max value is dependent on clip length. (Example:
0—180)Is there a way to display the value (on the seek bar itself) that is selected when the user > moves the seekbar?
如果您希望这些值位于Seekbar之上,则扩展Seekbar类并覆盖onDraw方法.在调用super.onDraw(canvas)之后,您可以绘制自己的东西,例如Seekbar开始和结束时的最小/最大值或当前进度.制作看起来不错的东西(在所有看起来不同的Seekbars上)将会有点困难,因为您需要仔细计算绘制文本的位置和方式.
一个更简单的方法是使一个自定义组件包含Seekbar,左侧和右侧有一个TextVIEw(下面有一个可选的TextVIEw用于当前进度)并设置那些具有最小/最大值的组件(即使以编程方式设置最大值) ,最大的TextVIEw可以“跟随”这些变化).知道Seekbar的宽度和当前进度,可以轻松计算和更新进度.
第二种情况的一个小例子:
public static class SeekbarWithValues extends relativeLayout { private int mMax = 100; private TextVIEw mMinText; private TextVIEw mMaxText; private TextVIEw mCurrentText; private Seekbar mSeek; public SeekbarWithValues(Context context, AttributeSet attrs) { super(context, attrs); LayoutInflater.from(getContext()).inflate( R.layout.content, this); // the minimum value is always 0 mMinText = (TextVIEw) findVIEwByID(R.ID.minValue); mMinText.setText("0"); mMaxText = (TextVIEw) findVIEwByID(R.ID.maxValue); mCurrentText = (TextVIEw) findVIEwByID(R.ID.curentValue); mSeek = (Seekbar) findVIEwByID(R.ID.seekbar); mSeek.setMax(100); mMaxText.setText(String.valueOf(mSeek.getMax())); } /** * This needs additional work to make the current progress text stay * right under the thumb drawable. * * @param newProgress * the new progress for which to place the text */ public voID updateCurrentText(int newProgress) { mCurrentText.setText(String.valueOf(newProgress)); final int padding = mMinText.getWIDth() + mSeek.getpaddingleft(); final int totalSeekWIDth = mSeek.getWIDth(); final relativeLayout.LayoutParams lp = (LayoutParams) mCurrentText .getLayoutParams(); final int seekLocation = (mSeek.getProgress() * totalSeekWIDth) / mMax - mCurrentText.getWIDth() / 2; lp.leftmargin = seekLocation + padding; mCurrentText.setLayoutParams(lp); } public Seekbar getSeekbar() { return mSeek; } public voID updateSeekMaxValue(int newValue) { mMax = newValue; mMaxText.setText(mMax); mSeek.setMax(mMax); }}
内容布局在哪里:
<merge xmlns:androID="http://schemas.androID.com/apk/res/androID" ><TextVIEw androID:ID="@+ID/minValue" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_alignBottom="@+ID/seekbar" androID:layout_alignParentleft="true" androID:layout_aligntop="@ID/seekbar" androID:gravity="center" /><TextVIEw androID:ID="@+ID/maxValue" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_alignBottom="@ID/seekbar" androID:layout_alignParentRight="true" androID:layout_aligntop="@ID/seekbar" androID:gravity="center" /><Seekbar androID:ID="@ID/seekbar" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_toleftOf="@ID/maxValue" androID:layout_toRightOf="@ID/minValue" /><TextVIEw androID:ID="@+ID/curentValue" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_below="@ID/seekbar" androID:gravity="center" />
目前的文本往往比它应该更加令人满意,并且需要额外的工作才能将其置于寻求句柄之下.
总结以上是内存溢出为你收集整理的android – 如何在SeekBar上显示最大值和最小值?全部内容,希望文章能够帮你解决android – 如何在SeekBar上显示最大值和最小值?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)