zoukankan      html  css  js  c++  java
  • Android TextView图文混合编排

    Android TextView图文混合编排

    实现技术细节不难,两个要点:
    1、html代码的混合编写。
    2,重写ImageGetter。


    例如:
    布局:
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout 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"
        android:orientation="vertical"
        tools:context="zhangphil.app.MainActivity">
    
        <TextView
            android:id="@+id/text1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    
        <TextView
            android:id="@+id/text2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    
        <TextView
            android:id="@+id/text3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:maxLines="1" />
    
        <TextView
            android:id="@+id/text4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:maxLines="1" />
    </LinearLayout>
    



    Java代码:
    package zhangphil.app;
    
    import android.graphics.drawable.Drawable;
    import android.support.v4.content.ContextCompat;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.text.Html;
    import android.widget.TextView;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            TextView text1 = (TextView) findViewById(R.id.text1);
            TextView text2 = (TextView) findViewById(R.id.text2);
            TextView text3 = (TextView) findViewById(R.id.text3);
            TextView text4 = (TextView) findViewById(R.id.text4);
    
            String s = "zhang phil @ csdn Android TextView图文混编";
    
            CharSequence cs1 = Html.fromHtml(stringMixWithImage1(s), imgageGetter, null);
            text1.setText(cs1);
    
            CharSequence cs2 = Html.fromHtml(stringMixWithImage2(s), imgageGetter, null);
            text2.setText(cs2);
    
            CharSequence cs3 = Html.fromHtml(stringMixWithImage3(s), imgageGetter, null);
            text3.setText(cs3);
    
            CharSequence cs4 = Html.fromHtml(stringMixWithImage4(s), imgageGetter, null);
            text4.setText(cs4);
        }
    
        private String stringMixWithImage1(String string) {
            return string + "1 " + "<img src='" + R.mipmap.ic_launcher + "'/>" + " " + "<img src='" + R.mipmap.ic_launcher + "'/>" + " " + "<img src='" + R.mipmap.ic_launcher + "'/>" + " ";
        }
    
        private String stringMixWithImage2(String string) {
            return "2 " + "<img src='" + R.mipmap.ic_launcher + "'/>" + " " + "<img src='" + R.mipmap.ic_launcher + "'/>" + " " + "<img src='" + R.mipmap.ic_launcher + "'/>" + " " + string;
        }
    
        private String stringMixWithImage3(String string) {
            return string + "3 " + "<img src='" + R.mipmap.ic_launcher + "'/>" + " " + "<img src='" + R.mipmap.ic_launcher + "'/>" + " " + "<img src='" + R.mipmap.ic_launcher + "'/>" + " ";
        }
    
        private String stringMixWithImage4(String string) {
            return "4 " + "<img src='" + R.mipmap.ic_launcher + "'/>" + " " + "<img src='" + R.mipmap.ic_launcher + "'/>" + " " + "<img src='" + R.mipmap.ic_launcher + "'/>" + " " + string;
        }
    
        private Html.ImageGetter imgageGetter = new Html.ImageGetter() {
            @Override
            public Drawable getDrawable(String source) {
                int id = Integer.parseInt(source);
                Drawable d = ContextCompat.getDrawable(getApplicationContext(), id);
                d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
                return d;
            }
        };
    }
    



    代码运行结果:


  • 相关阅读:
    对JavaScript调用堆栈和setTimeout用法的深入研究
    Js中的window.parent ,window.top,window.self 代表的对象
    lhgselect 联动选择下拉菜单 v1.0.0 (20110613)
    lhgcore JavaScript Library v1.4.5 API (20110622)
    表单元素完美垂直居中
    判断 iframe 是否加载完成的完美方法
    lhgdialog 弹出窗口插件 v3.5.2 ( 20110704 )
    JS的事件冒泡和事件捕获
    程序设计原则
    python中入口函数的用法
  • 原文地址:https://www.cnblogs.com/hehehaha/p/6147240.html
Copyright © 2011-2022 走看看