我正在根据搜索栏进度动态修改按钮的高度。
现在我想检索按钮的高度。所以我使用btn1.getHeight()
了.
但它为按钮高度提供了不正确/旧的值集。onProgressChanged()
SeekBar
相反,如果我使用btn1.getHeight()
in onStopTrackingTouch()
,我会得到正确的值。
这只是意味着,当我尝试在 中检索按钮的高度时onProgressChanged()
,UI 更改在屏幕上可见,但尚未注册,从而导致获取不正确/旧值。
如何获得正确的值onProgressChanged()
?
还有其他方法可以做到这一点吗?任何帮助表示赞赏。
编辑
@Luksprog:我做了以下更改:
<SeekBar
android:id="@+id/seekBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:maxHeight="9dp"
android:minHeight="9dp"
android:padding="10dp"
android:max="100"
android:progressDrawable="@drawable/seekbar_progress"
android:thumb="@drawable/shine_btn" />
<RelativeLayout
android:id="@+id/Graph01"
android:layout_width="wrap_content"
android:layout_height="200dp"
android:layout_below="@id/seekBar"
android:layout_marginTop="50dp"
android:gravity="bottom" >
<Button
android:id="@+id/btnGraph01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="#99f" />
<com.example.calci.views.MyTextView
android:id="@+id/tvGraph01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@id/btnGraph01" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/Graph02"
android:layout_width="wrap_content"
android:layout_height="200dp"
android:layout_below="@id/seekBar"
android:layout_toRightOf="@id/Graph01"
android:layout_marginTop="50dp"
android:gravity="bottom" >
<Button
android:id="@+id/btnGraph02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="#99f" />
<com.example.calci.views.MyTextView
android:id="@+id/tvGraph02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@id/btnGraph02" />
</RelativeLayout>
</RelativeLayout>
并且在活动中
RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams(20,
2 * progress * 1);
lp2.setMargins(55, 0, 0, 0);
btnGraph01.setLayoutParams(lp2);
RelativeLayout.LayoutParams lp3 = new RelativeLayout.LayoutParams(
new ViewGroup.MarginLayoutParams(20,
RelativeLayout.LayoutParams.WRAP_CONTENT));
lp3.setMargins(55, 0, 0, 30);
tvGraph01.setLayoutParams(lp3);
tvGraph01.setTextSize(6);
tvGraph01.setGravity(Gravity.CENTER);
但是 TextView 正在按钮内显示......为什么会这样?
如果我错了,请纠正我...