自定义首选项中的搜索栏宽度
我正在尝试编写一个首选项小部件以使用 SeekBar 设置值。这包括标题、摘要、搜索栏和用于显示当前值的文本视图。除了标题之外的所有内容都应显示在第二行中(作为标准首选项)。
我无法让它发挥作用。我首先尝试使用relativelayout,但下面等规则未应用。然后我尝试使用线性布局+tablelayout,但Seekbar没有捕获minimumWidth并且仍然很小。
image 此处
所有这些都是通过代码完成的。这是
LinearLayout layoutv = new LinearLayout(getContext());
layoutv.setOrientation(LinearLayout.VERTICAL);
//Title
LinearLayout.LayoutParams params1 = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
TextView view = new TextView(getContext());
view.setId(VIEW_ID_TITLE);
view.setText(getTitle());
view.setTextSize(21);
view.setTypeface(Typeface.SANS_SERIF, Typeface.NORMAL);
view.setTextColor(Color.WHITE);
view.setLayoutParams(params1);
layoutv.addView(view);
//TAble Layout to show all the information
TableLayout layout = new TableLayout(getContext());
TableLayout.LayoutParams params0 = new TableLayout.LayoutParams(
TableLayout.LayoutParams.FILL_PARENT,
TableLayout.LayoutParams.WRAP_CONTENT);
layout.setLayoutParams(params0);
layout.setShrinkAllColumns(true);
//Row
TableRow tr = new TableRow(getContext());
//Summary
TextView summary = new TextView(getContext());
summary.setId(VIEW_ID_SUMMARY);
summary.setText(getSummary());
summary.setTextSize(14);
summary.setTypeface(Typeface.SANS_SERIF, Typeface.NORMAL);
tr.addView(summary);
//SeekBar
SeekBar bar = new SeekBar(getContext());
bar.setId(VIEW_ID_BAR);
bar.setMax(maximum);
bar.setProgress((int)this.oldValue);
bar.setMinimumWidth(80);
bar.setOnSeekBarChangeListener(this);
tr.addView(bar);
//Monitor Box
this.monitorBox = new TextView(getContext());
this.monitorBox.setId(VIEW_ID_MONITOR);
this.monitorBox.setTextSize(12);
this.monitorBox.setTypeface(Typeface.MONOSPACE, Typeface.ITALIC);
this.monitorBox.setPadding(2, 5, 0, 0);
this.monitorBox.setText(Float.toString((float) bar.getProgress()/10.0f));
tr.addView(this.monitorBox);
layout.addView(tr);
layoutv.setPadding(15, 5, 10, 5);
layoutv.addView(layout);
layoutv.setId(android.R.id.widget_frame);
return layoutv;
非常感谢
I'm trying to code a preferences widget to set a value with a SeekBar. This includes a Title, Summary, Seekbar and a TextView to show current value. All of them but Title should be shown in a second row (as standard preferences).
I can't make it work. I first tried with a RelativeLayout but BELOW, etc. rules where not applied.Then I'm trying with Linear Layout + TableLayout but Seekbar doesn't catch minimumWidth and remains small.
image here
All this is done through code. Here it is
LinearLayout layoutv = new LinearLayout(getContext());
layoutv.setOrientation(LinearLayout.VERTICAL);
//Title
LinearLayout.LayoutParams params1 = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
TextView view = new TextView(getContext());
view.setId(VIEW_ID_TITLE);
view.setText(getTitle());
view.setTextSize(21);
view.setTypeface(Typeface.SANS_SERIF, Typeface.NORMAL);
view.setTextColor(Color.WHITE);
view.setLayoutParams(params1);
layoutv.addView(view);
//TAble Layout to show all the information
TableLayout layout = new TableLayout(getContext());
TableLayout.LayoutParams params0 = new TableLayout.LayoutParams(
TableLayout.LayoutParams.FILL_PARENT,
TableLayout.LayoutParams.WRAP_CONTENT);
layout.setLayoutParams(params0);
layout.setShrinkAllColumns(true);
//Row
TableRow tr = new TableRow(getContext());
//Summary
TextView summary = new TextView(getContext());
summary.setId(VIEW_ID_SUMMARY);
summary.setText(getSummary());
summary.setTextSize(14);
summary.setTypeface(Typeface.SANS_SERIF, Typeface.NORMAL);
tr.addView(summary);
//SeekBar
SeekBar bar = new SeekBar(getContext());
bar.setId(VIEW_ID_BAR);
bar.setMax(maximum);
bar.setProgress((int)this.oldValue);
bar.setMinimumWidth(80);
bar.setOnSeekBarChangeListener(this);
tr.addView(bar);
//Monitor Box
this.monitorBox = new TextView(getContext());
this.monitorBox.setId(VIEW_ID_MONITOR);
this.monitorBox.setTextSize(12);
this.monitorBox.setTypeface(Typeface.MONOSPACE, Typeface.ITALIC);
this.monitorBox.setPadding(2, 5, 0, 0);
this.monitorBox.setText(Float.toString((float) bar.getProgress()/10.0f));
tr.addView(this.monitorBox);
layout.addView(tr);
layoutv.setPadding(15, 5, 10, 5);
layoutv.addView(layout);
layoutv.setId(android.R.id.widget_frame);
return layoutv;
Many thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是RelativeLayout 的代码。两个文本重叠显示在同一行中
This is the code for RelativeLayout. Both texts are shown in overlapped in the same line