以编程方式设置搜索栏主题

时间:2017-06-22 09:27:49

标签: android android-theme android-seekbar

我有一个带刻度的SeekBar:

<SeekBar
        android:id="@+id/seekBar"
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:theme="@style/Base.Widget.AppCompat.SeekBar.Discrete"/>

是否可以通过编程方式设置主题?我的意思是,如果我想保留刻度,我可以使用@ style / Base.Widget.AppCompat.SeekBar.Discrete设置主题,否则我什么都不能做?

1 个答案:

答案 0 :(得分:0)

我可以看到以编程方式设置样式属性的唯一方法是SeekBar的构造函数。也许当您想以编程方式更改样式时,请实现此代码。

SeekBar oldSeek = findViewById(R.id.seekBar);
ViewGroup.LayoutParams lp = oldSeek.getLayoutParams();
int id = oldSeek.getId();
ViewGroup parent = (ViewGroup) oldSeek.getParent();
SeekBar newSeek = new SeekBar(context, null, R.style.YOUR_NEW_STYLE);
newSeek.setLayoutParams(lp);
newSeek.setId(id);
parent.removeView(oldSeek);
parent.addView(newSeek);

您收集了初始SeekBar的所有属性,使用所需的新样式创建新的SeekBar,然后移除旧的SeekBar并添加新的 val binding= DataBindingUtil.setContentView(this@MainActivity,R.layout.activity_main)