私はこれを持っていますRelativeLayout
:
<RelativeLayout
android:id="@+id/relativeLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/textView1"
android:text="TextView" />
</RelativeLayout>
をGONE
クリックしてtextView2を作成したいButton
。RelativeLayout
前と後の高さを知りたいです。
私はそれを行うためにこのコードを書きました:
Boolean shown = true;
Button btn = (Button) findViewById(R.id.button1);
final TextView tv2 = (TextView) findViewById(R.id.textView2);
final RelativeLayout rl = (RelativeLayout) findViewById(R.id.relativeLayout);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int saveHeight = rl.getHeight();
if(shown) {
tv2.setVisibility(View.GONE);
}
else {
tv2.setVisibility(View.VISIBLE);
}
shown = !shown;
Toast.makeText(getApplicationContext(), saveHeight + " " + rl.getHeight(), Toast.LENGTH_SHORT).show();
}
});
私の問題は、を呼び出すと常に古いサイズになることrl.getHeight
です。
私はすでに使用しようとしました:
rl.requestLayout();
rl.invalidate();
rl.setVisibility(View.GONE);
rl.setVisibility(View.VISIBLE);
私の質問はRelativeLayout
、高さが更新されるように、を更新するにはどうすればよいですか。
ViewTreeObserverを使用する必要があります。これを使用して、レイアウトの変更を聞くことができます。
final RelativeLayout rl=(RelativeLayout )findViewById(R.id.relativeLayout);
ViewTreeObserver vto=.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// This will always update height
relHeight=rl.getHeight();
}
});
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加