シークバーの進行状況に基づいてボタンの高さを動的に変更しています。
次に、ボタンの高さを取得したいと思います。だから私はの方法で使用btn1.getHeight()
しました。
しかし、ボタンの高さの誤った/古い値のセットを提供します。onProgressChanged()
SeekBar
代わりに、で使用btn1.getHeight()
した場合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 はボタン内に表示されています...なぜそうなのですか?
間違っている場合は訂正してください...