一、图片自适应占满

image.png

二、文字设定两行,超出两行在后面添加省略号

image.png

三、段落间距

  1. package com.example.dangjiano;
  2. import androidx.appcompat.app.AppCompatActivity;
  3. import androidx.core.content.ContextCompat;
  4. import android.content.Context;
  5. import android.graphics.drawable.Drawable;
  6. import android.os.Bundle;
  7. import android.text.SpannableString;
  8. import android.text.Spanned;
  9. import android.text.style.ImageSpan;
  10. import android.widget.TextView;
  11. import java.util.ArrayList;
  12. import java.util.List;
  13. public class DetailPageActivity extends AppCompatActivity {
  14. @Override
  15. protected void onCreate(Bundle savedInstanceState) {
  16. super.onCreate(savedInstanceState);
  17. setContentView(R.layout.activity_detail_page);
  18. }
  19. public static void setParagraphSpacing(Context context, TextView tv, String content, int paragraphSpacing, int lineSpacingExtra) {
  20. if (!content.contains("\n")) {
  21. tv.setText(content);
  22. return;
  23. }
  24. content = content.replace("\n", "\n\r");
  25. int previousIndex = content.indexOf("\n\r");
  26. //记录每个段落开始的index,第一段没有,从第二段开始
  27. List<Integer> nextParagraphBeginIndexes = new ArrayList<>();
  28. nextParagraphBeginIndexes.add(previousIndex);
  29. while (previousIndex != -1) {
  30. int nextIndex = content.indexOf("\n\r", previousIndex + 2);
  31. previousIndex = nextIndex;
  32. if (previousIndex != -1) {
  33. nextParagraphBeginIndexes.add(previousIndex);
  34. }
  35. }
  36. //获取行高(包含文字高度和行距)
  37. float lineHeight = tv.getLineHeight();
  38. //把\r替换成透明长方形(宽:1px,高:字高+段距)
  39. SpannableString spanString = new SpannableString(content);
  40. Drawable d = ContextCompat.getDrawable(context, R.drawable.paragraph_space);
  41. float density = context.getResources().getDisplayMetrics().density;
  42. //int强转部分为:行高 - 行距 + 段距
  43. d.setBounds(0, 0, 1, (int) ((lineHeight - lineSpacingExtra * density)
  44. / 1.2 + (paragraphSpacing - lineSpacingExtra) * density));
  45. for (int index : nextParagraphBeginIndexes) {
  46. // \r在String中占一个index
  47. spanString.setSpan(new ImageSpan(d), index + 1, index + 2,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  48. }
  49. tv.setText(spanString);
  50. }
  51. }

四、行间距

image.png

五、取消radio前面的圆圈

  1. 1.布局取消,并不能真正意义上的取消<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/1574587/1615887356941-4e857a11-6d86-4aea-a0a7-79360891df81.png#align=left&display=inline&height=157&margin=%5Bobject%20Object%5D&name=image.png&originHeight=157&originWidth=400&size=10703&status=done&style=none&width=400)<br /> 2.逻辑取消,实现真正的取消
  1. LinearLayoutCompat.LayoutParams params = new LinearLayoutCompat.LayoutParams
  2. (ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
  3. LinearLayout ll = (LinearLayout) findViewById(R.id.activity_main);
  4. RadioButton button = new RadioButton(this);
  5. button.setText("这是代码创建的RadioButton");
  6. // button.setButtonDrawable(new ColorDrawable(Color.TRANSPARENT)); //取消圆圈
  7. button.setButtonDrawable(0); //取消圆圈方式2
  8. ll.addView(button, params);
  9. }

六、设置布局和文件:

1.可见(visible):
  1. xml文件:android:visibility="visible"<br /> java代码:view.setVisibility(View.VISIBLE);

2.不可见(invisible):
  1. xml文件:android:visibility="invidible"<br /> java代码:view.setVisibility(View.INVISIBLE);

3.隐藏(GONE):
  1. xml文件:android:visibility="gone"<br /> java代码:view.setVisibility(View.GONE);