gpt4 book ai didi

android - 自定义 seeekbar 端点

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

我想更新 seekbar UI,以便在 seekbar 的两个端点都有一条垂直线。我通过在 android:progressDrawable 属性中设置自定义可绘制图像(端点处带有垂直线的水平线)来尝试此操作,但该搜索栏不可见(只有拇指可见)。我还尝试在搜索栏的左侧和右侧创建自定义 View ,但垂直线在不同设备中不会保持在准确位置。此外,由于 seekbar 具有默认的左右填充,我需要提供边距以准确显示 seekbar 端点处的垂直线,这对于不同的设备可能不同。

达到此要求的理想方法是什么?

<SeekBar 
android:id="@+id/seekBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxHeight="@dimen/dp1"
android:paddingLeft="0px"
android:paddingRight="0px"
android:progressDrawable="@color/white"/>

<View
android:layout_width="@dimen/dp1"
android:layout_height="@dimen/dp10"
android:layout_alignLeft="@+id/seekBar"
android:layout_alignTop="@+id/seekBar"
android:layout_marginLeft="@dimen/dp16"
android:bawrckground="@color/white"
android:id="@+id/view" />
<View
android:layout_width="@dimen/dp1"
android:layout_height="@dimen/dp10"
android:layout_alignRight="@+id/seekBar"
android:layout_alignTop="@+id/seekBar"
android:layout_marginRight="@dimen/dp16"
android:background="@color/white”/>

最佳答案

我猜你已经回答了你的问题。正如您所说,区别仅在于左右填充,然后您可以通过简单地更改 View 的边距来实现,如下所示。假设这是您的 XML:

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >

<View
android:id="@+id/view1"
android:layout_width="1dp"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/seekBar"
android:layout_alignParentLeft="true"
android:layout_alignTop="@+id/seekBar"
android:background="@android:color/black" />

<View
android:id="@+id/view2"
android:layout_width="1dp"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/seekBar"
android:layout_alignParentRight="true"
android:layout_alignTop="@+id/seekBar"
android:background="@android:color/black" />

<SeekBar
android:id="@+id/seekBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:maxHeight="1dp"
android:progressDrawable="@android:color/black" />
</RelativeLayout>

然后只需将以下行添加到您的 java 文件中:

SeekBar seekBar = (SeekBar) findViewById(R.id.seekBar);
((ViewGroup.MarginLayoutParams) findViewById(R.id.view1).getLayoutParams()).leftMargin = seekBar.getPaddingLeft();
((ViewGroup.MarginLayoutParams) findViewById(R.id.view2).getLayoutParams()).rightMargin = seekBar.getPaddingRight();

这绝对不是最好的解决方案,但它非常简单。

这里有几张图片展示了它的样子 Image 1 Image 2 Image 3

关于android - 自定义 seeekbar 端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39179822/

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