【问题标题】:Custom seekbar android自定义搜索栏android
【发布时间】:2017-04-21 04:10:28
【问题描述】:

我正在尝试实现自定义搜索栏,如下图所示

为此我做了下面的代码
我已经为 seekbar progressDrawable 创建了可绘制对象,如果需要代码,请告诉我,我会在这里发布。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/llScale"
          xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:layout_weight="1"
          android:orientation="vertical"
          android:paddingBottom="5dp">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/white"
    android:orientation="vertical"
    android:padding="5dp">

    <TextView
        android:id="@+id/sliderText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="5dp"
        android:text="Bernard"
        android:textColor="@color/blue"/>

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

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:background="@drawable/slider_background"
            android:padding="3dp">

            <SeekBar
                android:id="@+id/ratingBar"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:max="10"
                android:maxHeight="100dp"
                android:thumbTintMode="multiply"
                android:progressDrawable="@drawable/progressbar"
                android:thumb="@drawable/ic_slider_secondary"/>

            <TextView
                android:id="@+id/seekBarHint"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:gravity="center"
                android:text="Drag slider across"
                android:textColor="@color/dark_gray"/>
        </FrameLayout>

        <TextView
            android:id="@+id/progressText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/ic_slider_progress"
            android:gravity="center"
            android:textColor="@color/white"
            android:textStyle="bold"/>
    </FrameLayout>
</LinearLayout>

但是使用上面的代码,我得到的是下图
浅红色没有被完全填充,它留下了一些空间,最后圆圈超出了边界。

Gradle

compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
    applicationId "com.myapp"
    minSdkVersion 16
    targetSdkVersion 23
    multiDexEnabled true
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}  

谁能帮我解决这个问题

【问题讨论】:

  • 你需要的是自定义进度Drawable,可以通过调用SeekBar#setProgressDrawable(Drawable d)来设置
  • @pskink: 我已经在 xml 中设置了 android:progressDrawable="@drawable/progressbar"

标签: android android-custom-view android-seekbar


【解决方案1】:

我使用了您的代码并创建了演示,其中我做了 2 处更改,如下所示:

  1. 将 thumbOffset 设置为适合我的值 16.5dp 有效。

  2. 添加一个属性 android:splitTrack="false" 这将有助于删除拇指可绘制区域周围的空间。

     <SeekBar
        android:id="@+id/ratingBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:maxHeight="100dp"
        android:progressDrawable="@drawable/progressbar"
        android:thumb="@drawable/ic_slider_secondary"
        android:splitTrack="false"
        android:thumbOffset="16.5dp"/>  
    

快乐编码:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    相关资源
    最近更新 更多