以下是虚线,在XML中定义为ShapeDrawable:
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line">
<size
android:height="2dp"
android:width="700dp" />
<stroke
android:width="1dp"
android:color="@android:color/black"
android:dashWidth="1dp"
android:dashGap="2dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)
这将在几个姜饼手机上绘制一个漂亮的虚线.然而,在Galaxy Nexus上,破折号似乎被忽略,并且形状被绘制为连续的线.更奇怪的是,运行ICS的仿真器将使用破折号正确渲染它,它只是物理设备搞砸了.
我错过了一些明显的东西吗 或者这真的是Android 4.0的错误吗?这条线在几个地方使用.以下是ImageView的示例:
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/observation_observe_side_margin"
android:layout_marginRight="@dimen/observation_observe_side_margin"
android:layout_marginTop="16dp"
android:contentDescription="@string/dotted_line_description"
android:src="@drawable/dotted_line" />
Run Code Online (Sandbox Code Playgroud) 如何在画布上绘制虚线.我已经尝试过了:
Paint dashPaint = new Paint();
dashPaint.setARGB(255, 0, 0, 0);
dashPaint.setStyle(Paint.Style.STROKE);
dashPaint.setPathEffect(new DashPathEffect(new float[]{5, 10, 15, 20}, 0));
canvas.drawLine(0, canvas.getHeight() / 2, canvas.getWidth(), canvas.getHeight() / 2, dashPaint);
Run Code Online (Sandbox Code Playgroud)
它给了我一条简短的线条,而不是一条线条.
我厌倦了用文字中的一个特定单词加下划线,用虚线或虚线表示,还有Clickable Span.
我没有找到解决方案,有人可以帮助我.
SpannableStringBuilder sb = new SpannableStringBuilder(text); List listmot = new ArrayList();
listmot=db.getAlldef();
for(int i=0;i<listmot.size();i++)
{
String mot = (listmot.get(i)).get_mot();
final String def = (listmot.get(i)).get_definition();
Log.v(null, mot);
Pattern p = Pattern.compile(mot, Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(text);
while (m.find()){
// Typeface tf = Typeface.createFromAsset(getApplicationContext().getAssets(),"fonts/font.ttf");
//sb.setSpan(new CustomTypefaceSpan("",tf), m.start(), m.end(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
sb.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
// Toast.makeText(getApplicationContext(), def,Toast.LENGTH_LONG).show();
int[] values = new int[2];
widget.getLocationOnScreen(values);
Log.d("X & Y",values[0]+" "+values[1]);
AlertDialog.Builder alertDialog = new AlertDialog.Builder(
AndroidSQLiteTutorialActivity.this);
alertDialog.setMessage(def);
alertDialog.setCancelable(true);
AlertDialog …Run Code Online (Sandbox Code Playgroud) 我正在尝试按照指南制作禁用的EditText样式:
https://www.google.com/design/spec/components/text-fields.html#text-fields-labels
<EditText
android:id="@+id/account_number"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/test_account"
android:enabled="false" />
Run Code Online (Sandbox Code Playgroud)
我已经实现了材料设计风格,所以我的所有小部件看起来都很重要.
问题是:有没有办法在不添加其他视图的情况下使用样式将此虚线下划线?
我的styles.xml:
<style name="Theme.Main" parent="@style/Theme.AppCompat.Light.NoActionBar">
<item name="android:editTextStyle">@style/android:Widget.Material.EditText</item>
</style>
Run Code Online (Sandbox Code Playgroud) 现在,下面是我在地图中绘制地理位置之间路径的代码.这完全没问题.我想要实现的不是画一条线,而是用iPhone中的点(.)显示这条路径.我希望它像这个gp1 ......... gp2而不是像gp1_ _ __ _ _gp2 一样画一条直线.
我已经尝试了几乎所有的选择,但仍然没有成功,任何人都可以帮我解决这个问题?
private void drawPath(List geoPoints, int color) {
List overlays = objMapView.getOverlays();
int loopcount = geoPoints.size() - 1;
for (int i = 0; i < loopcount; i++) {
GeoPoint p1 = (GeoPoint) geoPoints.get(i);
GeoPoint p2 = (GeoPoint) geoPoints.get(i + 1);
MyPathOverLay p = null;
/**** Marking the start and end of the trailpath ****/
if (i == 0) {
Bitmap bmp = BitmapFactory.decodeResource(this.getResources(),R.drawable.greenflag);
p = new MyPathOverLay(p1, p2, 0xFFFF0000, true, false, bmp); …Run Code Online (Sandbox Code Playgroud) 我参考了这个链接:如何在Android中创建虚线/虚线?,并使用DashPathEffect.但这对我不起作用?为什么?我的代码:
public class NoteEditText extends EditText {
private Paint mPaint;
public NoteEditText(Context context) {
super(context);
}
public NoteEditText(Context context, AttributeSet attrs) {
super(context, attrs);
mPaint = new Paint();
mPaint.setStrokeWidth(1);
mPaint.setStyle(Paint.Style.FILL_AND_STROKE);
mPaint.setColor(Color.DKGRAY);
PathEffect effects = new DashPathEffect(new float[]{5,5,5,5},1);
mPaint.setPathEffect(effects);
}
@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
int height = this.getHeight();
int lineHeight = this.getLineHeight();
int lineNum = height / lineHeight;
L.l("line count: " + lineNum);
for (int i = 0; i < lineNum; i++) {
int …Run Code Online (Sandbox Code Playgroud) 我想在编程生成的TextViews之间绘制水平虚线.我试过这段代码:
Paint fgPaintSel = new Paint();
fgPaintSel.setARGB(255, 0, 0, 0);
fgPaintSel.setStyle(Paint.Style.STROKE);
fgPaintSel.setPathEffect(new DashPathEffect(new float[]{5, 10}, 0));
Run Code Online (Sandbox Code Playgroud)
但什么都没发生.我只是复制并粘贴了这段代码.我该怎么画一条虚线?谢谢.
我正在开发一个Android应用程序,我希望在我的布局中使用虚线XML作为分隔符.为此我为此使用了不同的drawable,而是制作一个虚线虚线,它正在制作一条线.
我的绘画如下:
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line">
<stroke
android:color="#FF404040"
android:width="1dp"
android:dashGap="3dp"
android:dashWidth="1dp"
/>
<size
android:height="3dp"
/>
</shape>
Run Code Online (Sandbox Code Playgroud) 有很多方法可以为TextView中显示的部分文本设置样式,例如设置其前景色(此处)和其他(此处).
我无法确定是否有办法在TextView 的部分文本上设置矩形虚线/虚线轮廓.像这样的东西:
我试图寻找这样的解决方案,并且我也尝试阅读CharacterStyle的文档.尽管如此,我认为任何可用的跨度都不适合这种风格.
是否有内置的解决方案,或者我是否需要使用自定义的实现?
我使用了下面建议的修改版本,它在POC上运行良好,但出于某种原因,在实际项目中,文本两侧的垂直虚线是粗体:
这是当前的代码:
要使用的字符串
<string name="text_to_format">test   %1$s test</string>
Run Code Online (Sandbox Code Playgroud)
使用代码
final String textToDash="DASHED";
String formattedStr = getString(R.string.text_to_format, textToDash+ "<bc/>");
Spanned textToShow = Html.fromHtml(formattedStr, null, new TagHandler() {
int start;
@Override
public void handleTag(final boolean opening, final String tag, Editable output, final XMLReader xmlReader) {
switch (tag) {
case "bc":
if (!opening)
start = output.length() - textToDash.length();
break;
case "html":
if (!opening)
output.setSpan(
new …Run Code Online (Sandbox Code Playgroud) 我需要从这个答案中复制 android XML 视图,但在 Jetpack Compose 中使用纯 kotlin
请给我在列表视图中添加垂直虚线的代码。我尝试使用形状标记方法创建 xml