文本环绕片段中的图像

时间:2017-08-10 13:32:22

标签: java android

我试图在我的Fragments之一中围绕图像设置换行文字,但它无效。有人可以帮我解决这个问题吗?

xml中的代码Fragment4

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="make.appaplication.Fragment4">



<!-- TODO: Update blank fragment layout -->

<ImageView
    android:layout_width="150dp"
    android:layout_height="150dp"
    android:src="@drawable/nature"
    android:id="@+id/imageView"
    android:layout_weight="1"
    android:layout_marginRight="17dp"
    android:layout_marginEnd="17dp"
    android:layout_alignParentTop="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true" />

<TextView
    android:id="@+id/textView3"
    android:textSize="17dp"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/text_page_1"
    android:layout_below="@+id/textView5"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

班级MyLeadingMarginSpan2

中的代码
    public class MyLeadingMarginSpan2 implements LeadingMarginSpan.LeadingMarginSpan2 {
    private int margin;
    private int lines;
    private boolean wasDrawCalled = false;
    private int drawLineCount = 0;

    public MyLeadingMarginSpan2(int lines, int margin) {
        this.margin = margin;
        this.lines = lines;
    }

    @Override
    public int getLeadingMargin(boolean first) {
        boolean isFirstMargin = first;
        // a different algorithm for api 21+
        if (Build.VERSION.SDK_INT >= 21) {
            this.drawLineCount = this.wasDrawCalled ? this.drawLineCount + 1 : 0;
            this.wasDrawCalled = false;
            isFirstMargin = this.drawLineCount <= this.lines;
        }

        return isFirstMargin ? this.margin : 0;
    }

    @Override
    public void drawLeadingMargin(Canvas c, Paint p, int x, int dir, int top, int baseline, int bottom, CharSequence text, int start, int end, boolean first, Layout layout) {
        this.wasDrawCalled = true;
    }

    @Override
    public int getLeadingMarginLineCount()
    {
        return this.lines;
    }
}

和课程Fragment4

中的代码
String text = getString(R.string.text_page_1);
        SpannableString ss = new SpannableString(text);
        Drawable dIcon = ContextCompat.getDrawable(getActivity(),R.drawable.nature);
        int rightMargin = dIcon.getIntrinsicWidth() + 10;
        ss.setSpan(new MyLeadingMarginSpan2(3, rightMargin), 0, ss.length(), 0);
        final TextView messageView = (TextView) view.findViewById(R.id.textView3);
        messageView.setText(ss);

这是我现在拥有的

javadoc

0 个答案:

没有答案