使用搜索栏填充框颜色(Android)

时间:2012-12-02 21:38:29

标签: android

所以......我正在尝试填写一个TextView,它根据活动顶部红色,绿色和蓝色SeekBars的进度来扩展活动屏幕的整个下半部分。用户可以移动任何搜索栏,并且扩展活动下半部分的整个宽度和长度的TextView将使用正确的RGB颜色方案填充,以匹配所有3个SeekBars的1-100移动。

关于如何做到这一点的任何想法?我用谷歌搜索了Android文档,找不到我想要的东西。即使是让我知道该做什么的链接也会很好:)

*我应该提到这里的代码在android VM上完全运行

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;

public class MainActivity extends Activity implements OnSeekBarChangeListener
{
    private SeekBar red;
    private SeekBar green;
    private SeekBar blue;

    private TextView progress1;
    private TextView progress2;
    private TextView progress3;


    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        red = (SeekBar)findViewById(R.id.seekBar1);
        red.setOnSeekBarChangeListener(this);
        green = (SeekBar)findViewById(R.id.seekBar2);
        green.setOnSeekBarChangeListener(this);
        blue = (SeekBar)findViewById(R.id.seekBar3);
        blue.setOnSeekBarChangeListener(this);
        progress1 = (TextView)findViewById(R.id.textView2);
        progress2 = (TextView)findViewById(R.id.textView4);
        progress3 = (TextView)findViewById(R.id.textView6);     
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) 
    {
        switch(seekBar.getId())
        {
        case R.id.seekBar1:
        progress1.setText(""+progress); 
        break;  
        case R.id.seekBar2:
            progress2.setText(""+progress);
            break;
        case R.id.seekBar3:
            progress3.setText(""+progress);
            break;
        }       

    }

    @Override
    public void onStartTrackingTouch(SeekBar arg0) 
    {
        // TODO Auto-generated method stub

    }

    @Override
    public void onStopTrackingTouch(SeekBar arg0) 
    {
        // TODO Auto-generated method stub

    }

}

1 个答案:

答案 0 :(得分:0)

将SeekBars配置为最大值为255,然后使用onProgressChanged()使用Color.argb()docs):

  int color = Color.argb(255, red.getProgress(), green.getProgress(), blue.getProgress());
  //you can also split that into the 3 channels if you wish
  //i'm assuming you actually want to show the resulting color
  progress1.setBackgroundColor(color);
相关问题