TextViews与动态内容对齐

时间:2017-01-11 16:12:12

标签: android xml android-layout textview android-linearlayout

当前观点: enter image description here

这是预期的结果: enter image description here

问题是红色文本是动态的我不知道运行时的长度。

目前我有一个LinearLayout,其中我有两个TextViews一个用于红色文本,另一个用于可点击链接。我已设法使用LinearLayout android:orientation=vertical在红色文本下方显示链接。

如果我将其设置为android:orientation=horizontal,则链接会转到最右边,而不是红色文本的内容旁边。

我当前的XML:

<LinearLayout
        android:paddingLeft="16dp"
        android:paddingRight="@dimen/card_container_padding"
        android:paddingTop="@dimen/card_container_padding"
        android:paddingBottom="@dimen/card_container_padding"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TextView
            android:id="@+id/cms_message_content"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColor="@color/black"
            android:textSize="@dimen/body_text_size"
            android:textStyle="bold"
            android:textAlignment="center"
            android:layout_weight="0"
            android:text=""/>

        <TextView
            android:id="@+id/cms_message_modal_link"
            android:layout_marginLeft="@dimen/account_home_line_margin_top"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColor="@color/lightBlue"
            android:layout_weight="1"
            android:textAlignment="textEnd"
            android:layout_gravity="end"
            android:textStyle="bold"
            android:textSize="@dimen/body_text_size"
            android:text="More Info"/>

    </LinearLayout>

我应该使用不同的布局还是有可以帮助我的属性?

2 个答案:

答案 0 :(得分:1)

仅使用1个TextView和setText使用Spannable

https://developer.android.com/reference/android/text/Spannable.html

User::select('users.id', 'users.full_name')
    ->join('roles as r', 'r.id', '=', 'users.role_id')
    ->where('users.id', $user_id)
    ->get();

答案 1 :(得分:1)

虽然Xan的答案在显示方面没有错,但它不允许仅点击下划线部分。我建议使用:

TextView textView = (TextView) findViewById(R.id.cms_message_content);
SpannableString ss = new SpannableString("Here is some non linked text, but this is linked");
ClickableSpan clickableSpan = new ClickableSpan() {
    @Override
    public void onClick(View view) {
        Toast.makeText(MainActivity.this, "Hey you clicked me", Toast.LENGTH_SHORT).show();
    }
};
int indexOfComma = ss.toString().indexOf(","); /* just for this case, im coloring after the comma */
ss.setSpan(clickableSpan, indexOfComma + 1, ss.toString().length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(ss);
textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setLinkTextColor(Color.BLUE);

祝你好运,快乐的编码!