GVKun编程网logo

为什么我不能为 textView (android) 应用边距?(textview不可编辑)

1

在本文中,我们将详细介绍为什么我不能为textView(android)应用边距?的各个方面,并为您提供关于textview不可编辑的相关解答,同时,我们也将为您带来关于Androidjava.lan

在本文中,我们将详细介绍为什么我不能为 textView (android) 应用边距?的各个方面,并为您提供关于textview不可编辑的相关解答,同时,我们也将为您带来关于Android java.lang.ClassCastException:android.widget.LinearLayout无法强制转换为android.widget.TextView、Android Studio RecyclerView androidx.constraintlayout.widget.ConstraintLayout 无法转换为 android.widget.TextView、Android TextView、Android TextView 使用替换构建出不同样式的字符串的有用知识。

本文目录一览:

为什么我不能为 textView (android) 应用边距?(textview不可编辑)

为什么我不能为 textView (android) 应用边距?(textview不可编辑)

如何解决为什么我不能为 textView (android) 应用边距?

TextView 代码:

  1. <TextView
  2. android:id="@+id/description_text_view"
  3. android:layout_width="wrap_content"
  4. android:layout_height="wrap_content"
  5. android:layout_marginStart="16dp"
  6. android:layout_marginEnd="16dp"
  7. android:text=""
  8. android:textSize="20sp"
  9. app:layout_constraintBottom_toBottomOf="parent"
  10. app:layout_constraintEnd_toEndOf="parent"
  11. app:layout_constraintStart_toStartOf="parent"
  12. app:layout_constraintTop_toBottomOf="@+id/domain_text"
  13. tools:text="Description"
  14. tools:visibility="visible" />

Here you can look at whole XML file 一切似乎都是正确的,但如果我启动该应用程序,我发现它不起作用。看看截图。 image

如果你有什么不明白的,就写下来,我的英语很差。
我该如何解决我的问题?

解决方法

当您使用约束并希望根据设置的约束设置小部件的 width/height 时,将其 width/height 设置为 {{1 }} 这意味着将约束填充为:

  1. 0dp

它会根据约束填充所有可用空间,然后您的 android:layout_width="0dp" android:layout_height="0dp" 会起作用。

Android java.lang.ClassCastException:android.widget.LinearLayout无法强制转换为android.widget.TextView

Android java.lang.ClassCastException:android.widget.LinearLayout无法强制转换为android.widget.TextView

我正在尝试打印listView中单击的值,但后来我得到以下异常:

07-04 10:40:56.482: E/AndroidRuntime(1356): FATAL EXCEPTION: main
07-04 10:40:56.482: E/AndroidRuntime(1356): java.lang.classCastException:      android.widget.LinearLayout cannot be cast to android.widget.TextView
07-04 10:40:56.482: E/AndroidRuntime(1356):     at com.passwordkeeper.ui.ActivityHomeScreen$1.onItemClick(ActivityHomeScreen.java:88)

这是一段代码:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mTextView = (TextView) findViewById(R.id.labelList);
    db = new DatabaseHandler(this);
    createList();
    displayList();
}   

createList函数正常工作.这是我的displayList方法:

public void displayList(){
    this.setlistadapter(new ArrayAdapter<String>(this, R.layout.activity_home_screen, R.id.listTextView, mAccountNames));
    mListView = getListView();
    mListView.setonItemClickListener(new OnItemClickListener(){
        public void onItemClick(AdapterView<?> parent, View view, int position,
                long id) {
            String product = ((TextView) view).getText().toString();
            Log.v("mSelectedProduct", product);
        }           
    });
}

我的文件activity_home_screen.xml的xml代码是:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
    android:id="@+id/listTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="28dp"
    android:layout_marginTop="26dp"
    android:textAppearance="?android:attr/textAppearanceLarge" />  

任何帮助都会有用!

谢谢.

解决方法:

你可以试试这个

mListView.setonItemClickListener(new OnItemClickListener(){
        public void onItemClick(AdapterView<?> parent, View view, int position,
                long id) {
            TextView txtview = (TextView)view.findViewById(R.id.listTextView);
            String product = txtview.getText().toString();
            Log.v("mSelectedProduct", product);
        }           
    });

Android Studio RecyclerView androidx.constraintlayout.widget.ConstraintLayout 无法转换为 android.widget.TextView

Android Studio RecyclerView androidx.constraintlayout.widget.ConstraintLayout 无法转换为 android.widget.TextView

如何解决Android Studio RecyclerView androidx.constraintlayout.widget.ConstraintLayout 无法转换为 android.widget.TextView

我刚刚开始使用 Kotlin 编程在 Android Studio 中学习 Android 应用。当我想创建一个简单的 RecyclerView 示例时。我在使用回收器视图适配器时遇到了错误。

我在网上学习了一些教程,但代码中仍然存在错误。我认为该错误来自 GameFragment.kt,它需要设置布局管理器(以下是与初始化回收器视图相关的代码)。

  1. val adapter = GameAdapter()
  2. binding.recyclerView.adapter = adapter
  3. val linearlayoutmanager:linearlayoutmanager = linearlayoutmanager(activity)
  4. linearlayoutmanager.orientation = linearlayoutmanager.VERTICAL
  5. binding.recyclerView.layoutManager = linearlayoutmanager

我尝试打印日志信息,查看执行了哪个方法,结果显示adapter初始化了两次,onCreateViewHolder执行了一次,但是onBindViewHolder从来没有执行过。 在 linearlayoutmanager 中,我尝试将“this”、“activity”、“requiredActivity”、“this 作为上下文”、“activity.context”放入其中,但上述方法均无效。有谁知道我该如何解决这个问题?


生成的错误日志

  1. java.lang.classCastException: androidx.constraintlayout.widget.ConstraintLayout cannot be cast to android.widget.TextView
  2. at com.jasonpwy.simplecountdowntimer.game.GameAdapter.onCreateViewHolder(GameAdapter.kt:31)
  3. at com.jasonpwy.simplecountdowntimer.game.GameAdapter.onCreateViewHolder(GameAdapter.kt:12)
  4. at androidx.recyclerview.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:7078)
  5. at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6235)
  6. at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6118)
  7. at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6114)
  8. at androidx.recyclerview.widget.linearlayoutmanager$LayoutState.next(linearlayoutmanager.java:2303)
  9. at androidx.recyclerview.widget.linearlayoutmanager.layoutChunk(linearlayoutmanager.java:1627)
  10. at androidx.recyclerview.widget.linearlayoutmanager.fill(linearlayoutmanager.java:1587)
  11. at androidx.recyclerview.widget.linearlayoutmanager.onLayoutChildren(linearlayoutmanager.java:665)
  12. at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4134)
  13. at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:3851)
  14. at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4404)
  15. at android.view.View.layout(View.java:21946)
  16. at android.view.ViewGroup.layout(ViewGroup.java:6260)
  17. at androidx.constraintlayout.widget.ConstraintLayout.onLayout(ConstraintLayout.java:1855)
  18. at android.view.View.layout(View.java:21946)
  19. at android.view.ViewGroup.layout(ViewGroup.java:6260)
  20. at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
  21. at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
  22. at android.view.View.layout(View.java:21946)
  23. at android.view.ViewGroup.layout(ViewGroup.java:6260)
  24. at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
  25. at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
  26. at android.view.View.layout(View.java:21946)
  27. at android.view.ViewGroup.layout(ViewGroup.java:6260)
  28. at androidx.appcompat.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:530)
  29. at android.view.View.layout(View.java:21946)
  30. at android.view.ViewGroup.layout(ViewGroup.java:6260)
  31. at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
  32. at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
  33. at android.view.View.layout(View.java:21946)
  34. at android.view.ViewGroup.layout(ViewGroup.java:6260)
  35. at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
  36. at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
  37. at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
  38. at android.view.View.layout(View.java:21946)
  39. at android.view.ViewGroup.layout(ViewGroup.java:6260)
  40. at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
  41. at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
  42. at com.android.internal.policy.DecorView.onLayout(DecorView.java:789)
  43. at android.view.View.layout(View.java:21946)
  44. at android.view.ViewGroup.layout(ViewGroup.java:6260)
  45. at android.view.ViewRootImpl.performlayout(ViewRootImpl.java:3086)
  46. at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2596)
  47. at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1727)
  48. at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7612)
  49. at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1029)
  50. at android.view.Choreographer.doCallbacks(Choreographer.java:852)
  51. at android.view.Choreographer.doFrame(Choreographer.java:787)
  52. at android.view.Choreographer$FramedisplayEventReceiver.run(Choreographer.java:1014)
  53. at android.os.Handler.handleCallback(Handler.java:883)
  54. at android.os.Handler.dispatchMessage(Handler.java:100)
  55. at android.os.Looper.loop(Looper.java:359)
  56. at android.app.ActivityThread.main(ActivityThread.java:7407)

game_fragment.xaml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <layout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:app="http://schemas.android.com/apk/res-auto"
  4. xmlns:tools="http://schemas.android.com/tools">
  5. <data>
  6. <variable
  7. name="gameviewmodel"
  8. type="com.example.simplecountdowntimer.game.Gameviewmodel" />
  9. </data>
  10. <androidx.constraintlayout.widget.ConstraintLayout
  11. android:id="@+id/constraint_layout"
  12. android:layout_width="match_parent"
  13. android:layout_height="match_parent"
  14. tools:context=".MainActivity">
  15. <EditText
  16. android:id="@+id/activity_name"
  17. android:layout_width="wrap_content"
  18. android:layout_height="wrap_content"
  19. android:layout_marginStart="16dp"
  20. android:ems="10"
  21. android:hint="@string/activity_name"
  22. android:inputType="textPersonName"
  23. app:layout_constraintBaseline_toBaselineOf="@+id/timer_text"
  24. app:layout_constraintEnd_toEndOf="parent"
  25. app:layout_constraintHorizontal_bias="0.0"
  26. app:layout_constraintStart_toStartOf="parent" />
  27. <Button
  28. android:id="@+id/submit_btn"
  29. android:layout_width="wrap_content"
  30. android:layout_height="wrap_content"
  31. android:layout_marginStart="16dp"
  32. android:layout_marginTop="20dp"
  33. android:text="@string/submit"
  34. app:layout_constraintStart_toStartOf="parent"
  35. app:layout_constraintTop_toBottomOf="@+id/activity_name" />
  36. <TextView
  37. android:id="@+id/timer_text"
  38. android:layout_width="0dp"
  39. android:layout_height="wrap_content"
  40. android:layout_marginStart="16dp"
  41. android:layout_marginTop="32dp"
  42. android:layout_marginEnd="16dp"
  43. android:fontFamily="@font/roboto"
  44. android:text="@{gameviewmodel.currentTimeString}"
  45. android:textSize="28sp"
  46. app:layout_constraintEnd_toEndOf="parent"
  47. app:layout_constraintStart_toEndOf="@+id/activity_name"
  48. app:layout_constraintTop_toTopOf="parent" />
  49. <androidx.recyclerview.widget.RecyclerView
  50. android:id="@+id/recyclerView"
  51. android:layout_width="match_parent"
  52. android:layout_height="0dp"
  53. android:layout_marginStart="16dp"
  54. android:layout_marginTop="16dp"
  55. android:layout_marginEnd="16dp"
  56. android:layout_marginBottom="16dp"
  57. app:layout_constraintBottom_toBottomOf="parent"
  58. app:layout_constraintEnd_toEndOf="parent"
  59. app:layout_constraintStart_toStartOf="parent"
  60. app:layout_constraintTop_toBottomOf="@+id/submit_btn"
  61. app:layoutManager="androidx.recyclerview.widget.linearlayoutmanager"/>
  62. </androidx.constraintlayout.widget.ConstraintLayout>
  63. </layout>

GameFragment.kt

  1. package com.example.simplecountdowntimer.game
  2. import android.os.Bundle
  3. import android.util.Log
  4. import android.view.LayoutInflater
  5. import android.view.View
  6. import android.view.ViewGroup
  7. import androidx.databinding.DataBindingUtil
  8. import androidx.fragment.app.Fragment
  9. import androidx.lifecycle.Observer
  10. import androidx.lifecycle.viewmodelProvider
  11. import androidx.recyclerview.widget.linearlayoutmanager
  12. import com.jasonpwy.simplecountdowntimer.R
  13. import com.jasonpwy.simplecountdowntimer.databinding.GameFragmentBinding
  14. class GameFragment : Fragment() {
  15. private lateinit var viewmodel : Gameviewmodel
  16. private lateinit var binding: GameFragmentBinding
  17. override fun onCreateView(inflater: LayoutInflater,container: ViewGroup?,savedInstanceState: Bundle?): View? {
  18. // Inflate view and obtain an instance of the binding class
  19. binding = DataBindingUtil.inflate(
  20. inflater,R.layout.game_fragment,container,false
  21. )
  22. viewmodel = viewmodelProvider(this).get(Gameviewmodel::class.java)
  23. binding.lifecycleOwner = this
  24. binding.gameviewmodel = viewmodel
  25. val adapter = GameAdapter()
  26. binding.recyclerView.adapter = adapter
  27. binding.submitBtn.setonClickListener {
  28. Log.i("Test","It runs")
  29. viewmodel.addText(binding.activityName.text.toString())
  30. viewmodel.CountDown()
  31. }
  32. val linearlayoutmanager:linearlayoutmanager = linearlayoutmanager(activity)
  33. linearlayoutmanager.orientation = linearlayoutmanager.VERTICAL
  34. binding.recyclerView.layoutManager = linearlayoutmanager
  35. viewmodel.ListData.observe(viewLifecycleOwner,Observer {
  36. it?.let {
  37. adapter.data = it
  38. }
  39. })
  40. return binding.root
  41. }
  42. }

GameAdapter.kt

  1. package com.jasonpwy.simplecountdowntimer.game
  2. import android.util.Log
  3. import android.view.LayoutInflater
  4. import android.view.View
  5. import android.view.ViewGroup
  6. import android.widget.TextView
  7. import androidx.recyclerview.widget.RecyclerView
  8. import com.example.simplecountdowntimer.R
  9. class GameAdapter() : RecyclerView.Adapter<GameAdapter.TextItemViewHolder>() {
  10. init{
  11. Log.i("Temp","Created")
  12. }
  13. var data = listof<String>()
  14. set(value) {
  15. field = value
  16. notifyDataSetChanged()
  17. }
  18. override fun onBindViewHolder(holder: TextItemViewHolder,position: Int) {
  19. val item = data[position]
  20. holder.view.text = item
  21. }
  22. override fun onCreateViewHolder(parent: ViewGroup,viewType: Int): TextItemViewHolder {
  23. val textView = LayoutInflater.from(parent.context).inflate(R.layout.game_fragment,parent,false)
  24. return TextItemViewHolder(textView as TextView)
  25. }
  26. override fun getItemCount(): Int {
  27. return data.size
  28. }
  29. class TextItemViewHolder(val view: TextView): RecyclerView.ViewHolder(view)
  30. }

Gameviewmodel.kt

  1. package com.example.simplecountdowntimer.game
  2. import android.os.CountDownTimer
  3. import android.text.format.DateUtils
  4. import android.util.Log
  5. import androidx.lifecycle.LiveData
  6. import androidx.lifecycle.mutablelivedata
  7. import androidx.lifecycle.Transformations
  8. import androidx.lifecycle.viewmodel
  9. class Gameviewmodel : viewmodel(){
  10. companion object {
  11. // These represent different important times
  12. // This is when the game is over
  13. const val DONE = 0L
  14. // This is the number of milliseconds in a second
  15. const val ONE_SECOND = 1000L
  16. // This is the total time of the game
  17. const val COUNTDOWN_TIME = 10000L
  18. }
  19. private lateinit var timer : CountDownTimer
  20. private var _currentTime = mutablelivedata<Long>()
  21. val currentTime : LiveData<Long>
  22. get() = _currentTime
  23. val currentTimeString = Transformations.map(currentTime) { time ->
  24. DateUtils.formatelapsedtime(time)
  25. }
  26. private val _storedText = mutablelivedata<String>()
  27. val storeText : LiveData<String>
  28. get() = _storedText;
  29. private val _ListData = mutablelivedata<List<String>>()
  30. val ListData : LiveData<List<String>>
  31. get() = _ListData
  32. init{
  33. _storedText.value = ""
  34. _ListData.value = listof()
  35. _ListData.value = _ListData.value?.plus("Testing only")
  36. }
  37. fun CountDown(){
  38. Log.i("Test","Count Down Start")
  39. _currentTime.value = COUNTDOWN_TIME
  40. timer = object : CountDownTimer(COUNTDOWN_TIME,ONE_SECOND) {
  41. override fun onTick(millisUntilFinished: Long) {
  42. _currentTime.value = (millisUntilFinished/ONE_SECOND)
  43. }
  44. override fun onFinish() {
  45. _currentTime.value = DONE
  46. }
  47. }
  48. timer.start()
  49. }
  50. fun addText(message: String){
  51. _storedText.value += message
  52. _storedText.value += "\\n"
  53. _storedText.value?.let { Log.i("Test",it) }
  54. _ListData.value = _ListData.value?.plus("Testing only")
  55. }
  56. }

解决方法

您的错误消息是不言自明的。 TextView 不能转换为 ConstraintLayout

当您在 onCreateViewHolder 中扩充视图时,您会得到一个 View,它是您要扩充的布局的根 (game_fragment),而根是一个 {{ 1}}。因此,当您编写 ConstraintLayout 时,您会收到错误消息,因为 return TextItemViewHolder(textView as TextView) 不是 ConstraintLayout

您必须使用 TextView 从膨胀的视图中获取 findViewById,类似于下面的代码

  1. TextView
,

我发现我误解了回收者视图的含义。我终于可以通过更改回收器视图适配器并在项目中再添加一个布局来解决问题。

我将项目上传到github:https://github.com/Jason627592/SimpleAndroidRecyclerViewExample

recyclerview 适配器的更新版本:

  1. package com.example.simplecountdowntimer.game
  2. import android.view.LayoutInflater
  3. import android.view.View
  4. import android.view.ViewGroup
  5. import android.widget.TextView
  6. import androidx.recyclerview.widget.RecyclerView
  7. import com.jasonpwy.simplecountdowntimer.R
  8. import kotlinx.android.synthetic.main.recyclerview_row.view.*
  9. class TextItemViewHolder(view: View): RecyclerView.ViewHolder(view){
  10. var content: TextView = view.stored_message
  11. }
  12. class GameAdapter() : RecyclerView.Adapter<TextItemViewHolder>() {
  13. var data = listOf<String>()
  14. set(value) {
  15. field = value
  16. notifyDataSetChanged()
  17. }
  18. override fun onBindViewHolder(holder: TextItemViewHolder,position: Int) {
  19. val item = data[position]
  20. holder.content.text = item
  21. }
  22. override fun onCreateViewHolder(parent: ViewGroup,viewType: Int): TextItemViewHolder {
  23. val view = LayoutInflater.from(parent.context).inflate(R.layout.recyclerview_row,parent,false)
  24. return TextItemViewHolder(view)
  25. }
  26. override fun getItemCount(): Int {
  27. return data.size
  28. }
  29. }

recyclerview_row.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. xmlns:tools="http://schemas.android.com/tools"
  5. android:layout_width="match_parent"
  6. android:layout_height="wrap_content"
  7. android:orientation="horizontal"
  8. android:padding="10dp">
  9. <TextView
  10. android:id="@+id/stored_message"
  11. android:layout_width="wrap_content"
  12. android:layout_height="wrap_content"
  13. android:textSize="20sp"
  14. tools:text="Testing" />
  15. </LinearLayout>

Android TextView

Android TextView

1、TextView不用获取焦点也能实现跑马灯

public class MarqueeTextView extends TextView {

@Override  

    protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {  

        if(focused)  

            super.onFocusChanged(focused, direction, previouslyFocusedRect);  

    }  

    @Override  

    public void onWindowFocusChanged(boolean focused) {  

        if(focused)  

            super.onWindowFocusChanged(focused);  

    }  

    @Override  

    public boolean isFocused() {  

        return true;  

    }  

}

           android:singleLine="true"

            android:focusable="true"

            android:focusableInTouchMode="true"

            android:ellipsize="marquee"

            android:scrollHorizontally="true"

            android:marqueeRepeatLimit="marquee_forever"

这里解决了:1、下拉状态栏到半截不松开时和失去焦点时显示"......"的问题

                     2、失去焦点不滚动问题。


原文地址:http://blog.csdn.net/wangjia55/article/details/7867437 

2、上下行间距:

android:lineSpacingExtra="3dp"  //设置行间距

android:lineSpacingMultiplier="1.2"  // 设置行间距的倍数,如”1.2″。

左右字间距:

android:scaleX="3"

3、设置TextView下划线并响应点击事件(SpannableString)

http://blog.csdn.net/herbert5069/article/details/24587085 

http://aichixihongshi.iteye.com/blog/1207503  (很全面)

4、TextView设置最多显示8个字符,超过部分显示...(省略号)

 <TextView

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:text="安德的游戏安德的游戏安德的游戏"

            android:ellipsize="end"

            android:singleLine="true"

            android:maxEms="8"/>

如果加上android:paddingLeft="20dp",此时所限制的8个字符会出现问题。

Android TextView 使用替换构建出不同样式的字符串

Android TextView 使用替换构建出不同样式的字符串

大概说下情况,遇到有行拼凑出来的文字,有三种不同的大小颜色的样式。 我先使用ABC三个字符分别去按照顺序设置不同大小和颜色。然后 依次将需要样式的字符串替换到A,B,C。便可以拥有三段不同样式的字符串。

` /** * <构建样式不同的总计字符串> * @param num 共X件商品 * @param price 价格 * @param yf (含运费XXX) * @return * @throw * @return SpannableStringBuilder */ private SpannableStringBuilder buildSpanForCost(String num, String price, String yf) { String content = new String("ABC"); SpannableStringBuilder builder = new SpannableStringBuilder(content);

	builder.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.text_deep_gray)), 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
	builder.setSpan(new AbsoluteSizeSpan(CommUtil.dip2px(getActivity(), 14)), 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
	
	builder.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.text_deep_gray)), 1, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
	builder.setSpan(new AbsoluteSizeSpan(CommUtil.dip2px(getActivity(), 16)), 1, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
	
	builder.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.text_light_gay)), 2, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
	builder.setSpan(new AbsoluteSizeSpan(CommUtil.dip2px(getActivity(), 14)), 2, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

	//记录替换到的位置到哪了
	int tmp_len = 0;
	builder.replace(0, 1, num);
	tmp_len += num.length();
	builder.replace(tmp_len, tmp_len+1, price);
	tmp_len += price.length();
	builder.replace(tmp_len, tmp_len+1, yf);
	return builder;
}

buildSpanForCost("共2件商品", " ¥1300.00 ", "(含运费XXX)")`

关于为什么我不能为 textView (android) 应用边距?textview不可编辑的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于Android java.lang.ClassCastException:android.widget.LinearLayout无法强制转换为android.widget.TextView、Android Studio RecyclerView androidx.constraintlayout.widget.ConstraintLayout 无法转换为 android.widget.TextView、Android TextView、Android TextView 使用替换构建出不同样式的字符串的相关信息,请在本站寻找。

本文标签: