我想更新搜索栏UI,以便在搜索栏的两个端点都有一条垂直线。我通过在android:progressDrawable属性中设置自定义可绘制图像(端点垂直线的水平线)来尝试此操作,但该搜索条不可见(只有拇指可见)。我还尝试在搜索栏的左侧和右侧创建自定义视图,但是垂直线不会保留在不同设备的准确位置。此外,由于搜索栏具有默认的左右填充,我需要给出边距以在搜索条端点处精确显示垂直线,这对于不同的设备可能是不同的。
达到此要求的理想方法是什么?
<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”/>
答案 0 :(得分:1)
<LinearLayout
android:id="@+id/ll_wizard_bar"
style="@style/Widget.AppCompat.ButtonBar"
android:layout_width="match_parent"
android:layout_gravity="center_vertical"
android:layout_height="30dp"
android:layout_margin="18dp"
android:orientation="horizontal">
<View
android:layout_width="0dp"
android:layout_weight=".05"
android:layout_height="30dp"
android:background="#FF0000FF" />
<SeekBar
android:id="@+id/my_seekbar"
android:layout_width="0dp"
android:layout_weight=".90"
android:layout_height="wrap_content"
android:maxHeight="15dip"
android:minHeight="15dip"
android:thumb="@android:drawable/star_big_off"
android:progressDrawable="@drawable/oval_shape"
android:layout_below="@+id/iv_consumericon"
android:indeterminate="false"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
/>
<View
android:layout_width="0dp"
android:layout_weight=".05"
android:layout_height="30dp"
android:background="#FF0000FF" />
</LinearLayout>
删除边
将搜索栏连接到垂直线上..以编程方式切断填充。 my_seekbar.setPadding(0, 0, 0, 0);
:礼貌
https://stackoverflow.com/a/33475281/705428
答案 1 :(得分:1)
您可以使用程序化方式。在此处,调用setPadding
。
视图可能会添加显示滚动条所需的空间, 取决于滚动条的样式和可见性。所以价值观 从getPaddingLeft(),getPaddingTop(),getPaddingRight()返回 getPaddingBottom()可能与此调用中设置的值不同。
演示XML
<?xml version="1.0" encoding="utf-8"?>
<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"
tools:context=".MainActivity">
<View
android:id="@+id/view1"
android:layout_width="10dp"
android:layout_height="50dp"
android:background="#54d66a"
/>
<SeekBar
android:id="@+id/seekBar"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:progress="0"
android:max="100"
android:layout_toRightOf="@+id/view1"/>
<View
android:layout_width="10dp"
android:layout_height="50dp"
android:background="#000000"
android:layout_toRightOf="@+id/seekBar"
/>
</RelativeLayout>
Java类
的OnCreate()
SeekBar SeekBarOb=(SeekBar)findViewById(R.id.seekBar);
SeekBarOb.setPadding(20,0,0,0);
不良方法
使用硬编码值。来电 DisplayMetrics 。
描述有关显示的一般信息的结构,例如 它的大小,密度和字体缩放。
DisplayMetrics metrics = getResources().getDisplayMetrics();
int DeviceTotalWidth = metrics.widthPixels;
int DeviceTotalHeight = metrics.heightPixels;
现在为了响应
SeekBarOb.setPadding(DeviceTotalWidth*2/100 ,0,0,0); // add your value
<强>最后强>
<强> FYI 强>
不要改变演示XML,在java类中添加它
DisplayMetrics metrics = getResources().getDisplayMetrics();
int DeviceTotalWidth = metrics.widthPixels;
int DeviceTotalHeight = metrics.heightPixels;
SeekBar SeekBarOb=(SeekBar)findViewById(R.id.seekBar);
SeekBarOb.setPadding((int) (DeviceTotalWidth*.85/100),0, (int) (DeviceTotalWidth*2.10/100),0);
答案 2 :(得分:1)