0

内部LinearLayoutに2つの垂直があります。TextSwitcher最初の 1 つ ( @+id/ts1) のみが表示される場合もあれば、両方が画面に表示される場合もあります。のフォントサイズts1は 20、ts2は 16 です。

<LinearLayout
            android:id="@+id/linearLayout1"
            android:orientation="vertical"
            android:layout_width="wrap_content"
            android:layout_height="50dp"
            android:gravity="center_vertical"
            android:focusable="false"
            android:layout_marginLeft="@dimen/dimen_left1"
            android:visibility="gone">

            <TextSwitcher
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:layout_gravity="center_vertical"
                android:id="@+id/ts1"/>

            <TextSwitcher
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:layout_gravity="center_vertical"
                android:id="@+id/ts2"/>
        </LinearLayout>

テストしたところ、両方が画面に表示されたときは正常に機能しましたが、ts1 のみが表示されている場合、テキストは垂直方向に中央に配置されず、中央に配置されるのではなく、垂直方向に上に配置されます。これら 2 の可視性をプログラムで設定しましたTextSwitchers

なぜこれが起こるのか誰か知っていますか?

ありがとう!!!

4

3 に答える 3

2

TextSwitcher ではなく TextView に重力オプションを追加する必要があります。たとえば、layout_width、layout_height、gravity オプションを動的に追加できます。

    mSwitcher1 = (TextSwitcher) findViewById(R.id.textSwitcher1);
    mSwitcher1.setFactory(new ViewSwitcher.ViewFactory() {

        public View makeView() {
            TextView myText = new TextView(MainActivity.this);
            myText.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL);
            myText.setTextSize(36);
            myText.setTextColor(Color.BLUE);

            // Add this
            myText.setGravity(Gravity.CENTER);
            // Add this
            myText.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT));
            return myText;
        }
    });
于 2016-11-30T00:21:26.770 に答える
-1

ConstraintLayout を使用してみましたか? それを使用すると、あなたを助けるかもしれません。すべての動作がどのようなものである必要があるかについてさらに情報を提供していただければ、コード例を提供できます。

于 2016-11-29T23:46:40.733 に答える