我目前正在尝试使用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>
答案 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
强加给int
,getProgress()
- 我已经得到了它,或者实例化了一个新的TextView
对于每个变化和手势。你实际上在一个手势上分配了两个新的TextView
;一个在开始,一个在最后。您可能希望让成员TextView
继续使用,并参考Android Docs以了解您正在使用的API方法,它们提供的参数以及它们的正确用法。