1

右側にステータスバーがあるレイアウトを作成します

私はxmlを使用しようとしましたが、これはうまくいきません.バーは右に揃えることができず、テキストビューは回転後に相対レイアウトにありません.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="test.com.myapplication.MainActivity">

    <RelativeLayout
        android:id="@+id/top_bar_land"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:rotation="90"
        android:background="@android:color/holo_red_light">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Hello World!" />
    </RelativeLayout>
</RelativeLayout>

ここに画像の説明を入力

だから私はプログラムでそれを回転させます

topBarLand = (RelativeLayout) findViewById(R.id.top_bar_land);
ViewTreeObserver vto = topBarLand.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        int w = topBarLand.getWidth();
        int h = topBarLand.getHeight();
        topBarLand.setRotation(90f);
        topBarLand.setTranslationX((w - h) / 2);
        topBarLand.setTranslationY(Math.abs(h - w) / 2);
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
            topBarLand.getViewTreeObserver().removeGlobalOnLayoutListener(this);
        } else {
            topBarLand.getViewTreeObserver().removeOnGlobalLayoutListener(this);
        }
    }
});

ただし、バーの幅は画面の高さと一致できません

ここに画像の説明を入力

そのwithに大きな数値を設定しても、幅はまだ変わりません。

RelativeLayout.LayoutParams param = new RelativeLayout.LayoutParams(1920, h);
topBarLand.setLayoutParams(param);

バーの幅を画面の高さと同じにするにはどうすればよいですか?

4

1 に答える 1