我能以编程方式更改android对话框主题背景颜色吗?

时间:2015-04-27 10:41:36

标签: android seekbar android-dialog android-seekbar

我使用对话框主题来显示我的活动

<activity
    android:name=".MyDialog"
    android:theme="@android:style/Theme.Holo.Light.Dialog.NoActionBar" >
</activity>

此活动中的搜索栏。

alphaSeek=(SeekBar)findViewById(R.id.seekbar_alpha);
alphaSeek.setOnSeekBarChangeListener(this);

@Override
public void onProgressChanged(SeekBar seekBar, int progress,
                              boolean fromUser) {
    ???=progress;
}

我可以使用搜索栏值来更改对话框背景的颜色吗?

更新

基于第一个答案,我重写了程序,评论的行是我尝试过的先前版本。但新版本与之前的版本完全相同,它只改变对话框内的颜色,而不是对话框的背景。

int alpha=0;
int red=0;
int green=0;
int blue=0;
SeekBar alphaSeek;

LinearLayout myActivityLayout;

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

    myActivityLayout = (LinearLayout) findViewById(R.id.MyActivityLayout);

    alphaSeek=(SeekBar)findViewById(R.id.seekbar);
    alphaSeek.setOnSeekBarChangeListener(this);

}

@Override
public void onProgressChanged(SeekBar seekBar, int progress,
                              boolean fromUser) {

    String hex = String.format("%02x%02x%02x%02x", alpha, red, green, blue);
    int color=(int)Long.parseLong(hex,16);
    //ColorDrawable cd=new ColorDrawable(color);
    //getWindow().setBackgroundDrawable(cd);

    myActivityLayout.setBackgroundColor(color);
}

布局xml

<LinearLayout 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:orientation="vertical"
    android:id="@+id/MyActivityLayout"
    tools:context="com.MyDialog">

    <SeekBar
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:max="255"
        android:id="@+id/seekbar"
        android:layout_gravity="center_horizontal" />

</LinearLayout>

的AndroidManifest.xml

<activity
    android:name=".MyDialog"
    android:theme="@android:style/Theme.Holo.Light.Dialog.NoActionBar" >
</activity>

1 个答案:

答案 0 :(得分:0)

当SeekBarChange时,onProgressChanged()的{​​{1}}将被调用,屏幕的背景(OnSeekBarChangeListener)将根据值(LinearLayout)进行更新。

您可以执行以下操作:

SeekBar.getProgress()

参考:change-background-color-by-seekbar