我有一个带刻度的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设置主题,否则我什么都不能做?
答案 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)
。