Android搜索栏走向了最后的轨道

时间:2013-11-23 22:23:53

标签: android seekbar

我遇到了一种自定义搜索栏的问题我所做的是创建了一个扩展SeekBar的新对象。 然后在onSizeChanged函数中,我正在计算宽度,并将其设置,并将该大小传递给super.onSizeChanged()函数。 现在,这给了我完美正确的SeekBar轨道宽度,然而,当我按下并拖动SeekBar拇指时,它向右移动的更多,拇指进一步移动搜索条轨道填充颜色区域的头部。这么多,以至于它移动到可用屏幕的边缘,因为轨道的颜色填充宽度落后。

我希望有些灵魂可以指导。没有什么花哨的简单手动干预来改变onSizeChanged的宽度就可以了。 这是我用于此

的XML
<com.test.SeekBar
    android:id="@+id/seek_bar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_margin="1dip"
    android:progress="0"
    android:max="100"
    android:progressDrawable="@layout/progressbar"
    android:secondaryProgress="0" 

    />

由于

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法。我的解决方案是在主要活动中以编程方式混合使用xml和设置布局参数。

  1. 我将seekbar xml元素包含在另一个线性布局元素中(现在我在这个线性布局元素中只有一个控件
  2. 然后在代码中我根据需要计算了所需的宽度并设置了布局参数 如下

    int newWidth  = getSeekBarWidthAsNeeded();
    int newHeight = getDesiredHeight();// smaller for lareger screens
    
    LinearLayout.LayoutParams llp = new LinearLayout.LayoutParams(newWidth,newHeight);
    mySeekBar.setLayoutParams(llp);
    
  3. 这终于照顾了我使用onSizeChanged和其他方法的困难,我在这方面遇到了很多麻烦