我正在尝试使用TextViewEx,(Textjustify) [link](https://github.com/bluejamesbond/TextJustify-Android) 在我的项目中获取文本对齐效果,但如果我将文件直接复制并粘贴到我的项目中,则文件会出现错误,例如缺少某些内容(其他文件)。我也搜索了如何使用TextViewEx,但我得到的结果如下 [link](TextViewEx, (Textjustify)) 在这个有人告诉将文件导入根文件夹。它是什么意思(根文件夹)。此外,如果任何人有示例代码使用TextViewEx或任何其他简单的方法来证明Android中的文本或示例文本证明理由,那么请帮助我谢谢。
答案 0 :(得分:0)
嗯我已经挣扎了很多但是找不到任何帮助来解决这个问题,但我找到了另一种方法来证明文本的合理性。如果有人对文本的证明有问题,请使用此类。
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.util.AttributeSet;
import android.util.Log;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
public class JustifiedTextView extends WebView {
private String core = "<html><body style='text-align:justify;color:rgba(%s);font-size:%dpx;margin: 0px 0px 0px 0px;'>%s</body></html>";
private String text;
private int textColor;
private int backgroundColor;
private int textSize;
public JustifiedTextView(Context context, AttributeSet attrs) {
super(context, attrs);
init(attrs);
}
public JustifiedTextView(Context context, AttributeSet attrs, int i) {
super(context, attrs, i);
init(attrs);
}
@SuppressWarnings("deprecation")
@SuppressLint("NewApi")
public JustifiedTextView(Context context, AttributeSet attrs, int i,
boolean b) {
super(context, attrs, i, b);
init(attrs);
}
private void init(AttributeSet attrs) {
TypedArray a = getContext().obtainStyledAttributes(attrs,
R.styleable.JustifiedTextView);
text = a.getString(R.styleable.JustifiedTextView_text);
if (text == null)
text = "";
textColor = a.getColor(R.styleable.JustifiedTextView_textColor,
Color.BLACK);
backgroundColor = a.getColor(
R.styleable.JustifiedTextView_backgroundColor,
Color.TRANSPARENT);
textSize = a.getInt(R.styleable.JustifiedTextView_textSize, 12);
a.recycle();
this.setWebChromeClient(new WebChromeClient() {
});
reloadData();
}
public void setText(String s) {
if (s == null)
this.text = "";
else
this.text = s;
reloadData();
}
@SuppressLint("NewApi")
private void reloadData() {
if (text != null) {
String data = String
.format(core, toRgba(textColor), textSize, text);
Log.d("test", data);
this.loadDataWithBaseURL(null, data, "text/html", "utf-8", null);
}
// set WebView's background color *after* data was loaded.
super.setBackgroundColor(backgroundColor);
// Hardware rendering breaks background color to work as expected.
// Need to use software renderer in that case.
if (android.os.Build.VERSION.SDK_INT >= 11)
this.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null);
}
public void setTextColor(int hex) {
textColor = hex;
reloadData();
}
public void setBackgroundColor(int hex) {
backgroundColor = hex;
reloadData();
}
public void setTextSize(int textSize) {
this.textSize = textSize;
reloadData();
}
@SuppressLint("DefaultLocale")
private String toRgba(int hex) {
String h = Integer.toHexString(hex);
int a = Integer.parseInt(h.substring(0, 2), 16);
int r = Integer.parseInt(h.substring(2, 4), 16);
int g = Integer.parseInt(h.substring(4, 6), 16);
int b = Integer.parseInt(h.substring(6, 8), 16);
return String.format("%d,%d,%d,%d", r, g, b, a);
}
}
这是attrib.xml类
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="JustifiedTextView">
<attr name="text" format="string" localization="suggested" />
<attr name="textColor" format="color|reference" />
<attr name="backgroundColor" format="color|reference" />
<attr name="textSize" format="integer" min="1" />
</declare-styleable>
</resources>
在布局类中,将其用作
<com.example.animationtest.JustifiedTextView
android:id="@+id/tjTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
app:text="Your Text Here" >
</com.example.animationtest.JustifiedTextView>
com.example.animationtest是项目中的包名,您放置文件JustifiedTextView.class
在类后面的代码中访问控件
JustifiedTextView tjTextView;
tvTextView2.setTextSize(convertToDp(24));
tjTextView.setTextColor(Color.RED);
tjTextView.setTextSize((int) convertFromDp(18));
其中convertFromDp用于根据屏幕获取文本大小。
public float convertFromDp(int input) {
final float scale = getResources().getDisplayMetrics().density;
return ((input - 0.5f) / scale);
}