13

2つのテキストを含むTextViewを作成しようとしています。1つは左端に配置され、もう1つは右端に配置されています。2つの単語の間にスペースを入れることはできますが、もっと良いテクニックがあるかどうか疑問に思いました。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:background="@drawable/background_common"
    android:id="@+id/LinearLayout0123">

   <TextView
        android:layout_width="300dp"
        android:layout_height="40dp"
        android:textColor="@color/Black"
        android:textStyle="bold"
        android:textSize="15dp"
        android:paddingLeft="10dp"
        android:paddingTop="10dp"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="10dp"
        android:background="@drawable/selector_social_facebook_twitter"
        android:text="Right Text                                  Left Text" />
</LinearLayout>
4

6 に答える 6

26

別の方法は次のとおりです。

<FrameLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/background_common">
    <TextView
        android:text="Left Text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="left"/>
    <TextView
        android:text="Right Text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"/>
</FrameLayout>

Layout_gravityは、子を配置する場所を親に指示します。FrameLayoutでは、子はどこにでも移動でき、他の子に邪魔されません。重複がある場合は、最後に追加された子が一番上になります。幸運を!

于 2012-05-23T17:39:47.140 に答える
4

テキストを1つのtextViewに詰め込む代わりに、2つのtextviewを使用してみませんか

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" 
    android:layout_width="300dip"
    android:layout_height="fill_parent" 
    android:background="@drawable/background_common"
    android:id="@+id/LinearLayout0123">

   <TextView
        android:layout_weight="1"
        android:layout_width="0dip"
        android:layout_height="40dp"
        android:textColor="@color/Black"
        android:textStyle="bold"
        android:textSize="15dp"
        android:paddingLeft="10dp"
        android:paddingTop="10dp"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="10dp"
        android:background="@drawable/selector_social_facebook_twitter"
        android:text="Left Text" />

   <TextView
        android:layout_weight="1"
        android:layout_width="0dip"
        android:layout_height="40dp"
        android:textColor="@color/Black"
        android:textStyle="bold"
        android:textSize="15dp"
        android:paddingLeft="10dp"
        android:paddingTop="10dp"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="10dp"
        android:background="@drawable/selector_social_facebook_twitter"
        android:text="Right Text" />
</LinearLayout>

テキストを右揃えにする場合は、右のテキストボックスにandroid:gravity="right"を設定できます。

于 2012-05-23T17:32:33.617 に答える
4

必要なのが1行(ラベル:...値など)だけの場合は、実際には配置スパンを使用してこれを実現できます。唯一の問題は、スパンが段落全体で機能することです。そのため、左右のテキストを別々の段落に配置し、「ゼロ行の高さ」のスパンを使用して1行にマージする必要があります。

このようなもの:

public void setLeftRightText(TextView view, String left, String right) {
    SpannableString merged = new SpannableString(left + "\n" + right);
    merged.setSpan(
            new AlignmentSpan.Standard(Layout.Alignment.ALIGN_NORMAL),
            0, left.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE
    );
    merged.setSpan(
            new LineOverlapSpan(),
            left.length(), left.length() + 1, Spanned.SPAN_INCLUSIVE_EXCLUSIVE
    );
    merged.setSpan(
            new AlignmentSpan.Standard(Layout.Alignment.ALIGN_OPPOSITE),
            left.length() + 1, left.length() + 1 + right.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE
    );
    view.setText(merged);
}

LineOverlapSpanが次のように実装されている場合:

public class LineOverlapSpan implements LineHeightSpan {
    @Override
    public void chooseHeight(final CharSequence text, final int start, final int end, final int spanstartv, final int v, final Paint.FontMetricsInt fm) {
        fm.bottom += fm.top;
        fm.descent += fm.top;
    }
}

詳細については、この回答を参照してください。

于 2017-07-25T17:01:16.267 に答える
1

これは間違いなくあなたのために働くでしょう...

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:layout_marginLeft="5dp"
        android:text="Left Side"
        android:textSize="15sp"
        android:textStyle="bold" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_marginRight="5dp"
        android:text="Right Side"
        android:textSize="15sp"
        android:textStyle="bold" />
</RelativeLayout>
于 2013-08-07T11:41:57.547 に答える
1

これは、テキストが重ならないようにするため、より良い場合があります。

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/title"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_gravity="start" />

    <TextView
        android:id="@+id/sub_title"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1
        android:layout_gravity="end" />
</LinearLayout>
于 2015-06-01T09:19:33.330 に答える
0

これは私がそれをするために見つけた最も簡単な方法です。秘訣はmatch_parent、2番目のテキストビューで使用して、残りのスペースを占有し、gravity属性がテキストを最後に移動できるようにすることです。

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Left Aligned" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="end"
        android:text="Right Aligned" />
</LinearLayout>
于 2018-03-07T12:59:53.827 に答える