根据搜索栏进度调整形状的大小

时间:2014-06-17 00:30:05

标签: android

我目前正在尝试使用SeekBar来更改铃声的大小:随着SeekBar的值增加,我希望铃声的大小增加。但是,当我使用下面的代码时,形状大小不会改变。有谁知道如何使这项工作?

公共类MainActivity扩展了Activity {

TextView textview3;
SeekBar tipSeekBar;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    tipSeekBar = (SeekBar) findViewById(R.id.seekBar);

    tipSeekBar.setOnSeekBarChangeListener(tipSeekBarListener);
}

private OnSeekBarChangeListener tipSeekBarListener = new OnSeekBarChangeListener(){

    @Override
    public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
        TextView textview3 = (TextView) findViewById(R.id.textView3);
        textview3.setHeight((int) (tipSeekBar.getProgress()));
        textview3.setWidth((int) (tipSeekBar.getProgress()));
    }

    @Override
    public void onStartTrackingTouch(SeekBar arg0) {
        TextView textview3 = (TextView) findViewById(R.id.textView3);
        textview3.setHeight((int) (tipSeekBar.getProgress()));
        textview3.setWidth((int) (tipSeekBar.getProgress()));
    }

    @Override
    public void onStopTrackingTouch(SeekBar arg0) {
        TextView textview3 = (TextView) findViewById(R.id.textView3);
        textview3.setHeight((int) (tipSeekBar.getProgress()));
        textview3.setWidth((int) (tipSeekBar.getProgress()));
    }

};

xml文件:

<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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/textView"
    android:layout_marginTop="20dp"
    android:text="TextView" />

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:background="@drawable/circgraya" />

<TextView
    android:id="@+id/textView3"
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:background="@drawable/ring_unfilled_gray" />

<TextView
    android:id="@+id/textView4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:gravity="center"
    android:text="Large Text"
    android:textAppearance="?android:attr/textAppearanceLarge" />

<SeekBar
    android:id="@+id/seekBar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/textView4"
    android:layout_toRightOf="@+id/textView"
    android:progressDrawable="@drawable/red_scrubber_progress"
    android:thumb="@drawable/red_scrubber_control" />

<TextView
    android:id="@+id/textView"
    android:layout_width="50dp"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/textView4"
    android:background="#CC0000"
    android:gravity="center"
    android:text="10"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textColor="#ffffff" />

</RelativeLayout>

1 个答案:

答案 0 :(得分:0)

你的问题在这里......

<TextView
    android:id="@+id/textView3"
    android:layout_width="200dp" <---
    android:layout_height="200dp" <---
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:background="@drawable/ring_unfilled_gray" />

您已明确设置大小,因此它似乎不会覆盖它,因为它会包含min,max和s包含内容。

这对我有用(通过搜索栏改变文本视图的大小)......

<TextView
    android:id="@+id/textView3"
    android:layout_width="wrap_content" <---
    android:layout_height="wrap_content" <---
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:text="I'll get bigger soon..." /> <-- notice no background!

然而,这是一个黑客。文本视图可能不是您想要的。我没有使用图像,因为图像对于控制文本视图的高度和宽度并不重要。我相信图像会更合适。我想你会发现,一旦你“开始工作”,它可能就不会像你想的那样。

另外 -

你可能在这里做了一些不必要的事情。处理进度变化的代码就是这样(现在名称改为我的)......

...
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
    if (fromUser) {
        mTextView.setHeight(progress);
        mTextView.setWidth(progress);
    }
}
...

你可以告诉我不要......将int强加给intgetProgress() - 我已经得到了它,或者实例化了一个新的TextView对于每个变化和手势。你实际上在一个手势上分配了两个新的TextView;一个在开始,一个在最后。您可能希望让成员TextView继续使用,并参考Android Docs以了解您正在使用的API方法,它们提供的参数以及它们的正确用法。