精华内容
下载资源
问答
  • 在目标控件外围套一层相对布局,占满横向空间,让文本控件在相对布局中居右显示 . <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" ...

    效果图

    1. 一般做出来的效果

    2. 预期效果图(差别在第二张)

    预期效果: 文字单行居右对齐,多行居左对齐.

    实现方案

    1. 让目标文本控件内居左对齐
    2. 在目标控件外围套一层相对布局,占满横向空间,让文本控件在相对布局中居右显示 .
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/selectAddressLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="分类"
            android:textColor="#FF333333" />
    
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentEnd="true"
                android:layout_marginStart="40dp"
                android:text="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
                android:textColor="#999999"
                tools:ignore="SpUsage" />
    
        </RelativeLayout>
    </LinearLayout>
    
    展开全文
  • HTML如何让文本两端对齐

    万次阅读 2018-03-15 00:00:59
    之前看一个外文网站,貌似都不是两端对齐,我想把他转换为PDF文件下载下来。不是两端对齐看起来太难受了。找了个方法。 Solution &lt;p style="text-align:justify; text-justify:inter-ideograph;&...

    Question

    之前看一个外文网站,貌似都不是两端对齐,我想把他转换为PDF文件下载下来。不是两端对齐看起来太难受了。找了个方法。


    Solution

    <p style="text-align:justify; text-justify:inter-ideograph;>日本驻华大使丹羽宇一郎:日中关系比夫妻还紧密日本驻华大使丹羽宇一郎:日中关系比夫妻还紧密日本驻华大使丹羽宇一郎:日中关系比夫妻还紧密日本驻华大使丹羽宇一郎:日中关系比夫妻还紧密</p>

    text-align:justify:这是文本对齐标签只是英文字体有效果,中文字体没有作用,如果想中文也能两端对齐就加上text-justify:inter-ideograph


    Reference

    [1]. HTML如何让文本两端对齐

    展开全文
  • text-align:属性规定元素中的文本的水平对齐方式。 left 把文本排列到左边。默认值:由浏览器决定。 right 把文本排列到右边。...text-align-last:属性规定如何对齐文本的最后一行。 注意:text-align-last...
    1. text-align:属性规定元素中的文本的水平对齐方式。
      left 把文本排列到左边。默认值:由浏览器决定。
      right 把文本排列到右边。
      center 把文本排列到中间。
      justify 实现两端对齐文本效果。
      inherit 规定应该从父元素继承 text-align 属性的值。

    2. text-align-last:属性规定如何对齐文本的最后一行。
      注意:text-align-last 属性只有在 text-align 属性设置为 “justify” 时才起作用。
      auto 默认值。最后一行被调整,并向左对齐。
      left 最后一行向左对齐。
      right 最后一行向右对齐。
      center 最后一行居中对齐。
      justify 最后一行被调整为两端对齐。
      start 最后一行在行开头对齐(如果 text-direction 是从左到右,则向左对齐;如果 text-direction 是从右到左,则向右对齐)。
      end 最后一行在行末尾对齐(如果 text-direction 是从左到右,则向右对齐;如果 text-direction 是从右到左,则向左对齐)。
      initial 设置该属性为它的默认值。请参阅 initial。
      inherit 从父元素继承该属性。请参阅 inherit。

    3. text-justify:属性规定当 text-align 被设置为 text-align 时的齐行方法。该属性规定如何对齐行文本进行对齐和分隔。
      auto 浏览器决定齐行算法。
      none 禁用齐行。
      inter-word 增加/减少单词间的间隔。
      inter-ideograph 用表意文本来排齐内容。
      inter-cluster 只对不包含内部单词间隔的内容(比如亚洲语系)进行排齐。
      distribute 类似报纸版面,除了在东亚语系中最后一行是不齐行的。
      kashida 通过拉伸字符来排齐内容。

    HTML

    <div class="ie" style="width: 200px; height: 200px; border: solid 1px #0094ff;">
       <p class="p1">测试测试测试测试</p>
       <p class="p2">测试测试测试测试测试</p>
    </div>
    

    CSS

    .ie { text-align: justify; text-align-last: justify; text-justify: inter-ideograph; }
    .p1:after { width: 100%; height: 0px; display: inline-block; overflow: hidden; content: ''; vertical-align: top; }
    p { border: solid 1px red; margin: 0px; padding: 0px; line-height: 20px; height: 20px; }
    
    展开全文
  • java-如何垂直对齐文本?目标:纯Canvas上的Android> = 1.6。假设我想编写一个函数,该函数将绘制一个(宽度,高度)大的红色矩形,然后在其中绘制一个黑色的Hello World文本。 我希望文本在视觉上位于矩形的中心。...

    java-如何垂直对齐文本?

    目标:纯Canvas上的Android> = 1.6。

    假设我想编写一个函数,该函数将绘制一个(宽度,高度)大的红色矩形,然后在其中绘制一个黑色的Hello World文本。 我希望文本在视觉上位于矩形的中心。 因此,让我们尝试:

    void drawHelloRectangle(Canvas c, int topLeftX,

    int topLeftY, int width, int height) {

    Paint mPaint = new Paint();

    // height of 'Hello World'; height*0.7 looks good

    int fontHeight = (int)(height*0.7);

    mPaint.setColor(COLOR_RED);

    mPaint.setStyle(Style.FILL);

    c.drawRect( topLeftX, topLeftY, topLeftX+width, topLeftY+height, mPaint);

    mPaint.setTextSize(fontHeight);

    mPaint.setColor(COLOR_BLACK);

    mPaint.setTextAlign(Align.CENTER);

    c.drawText( "Hello World", topLeftX+width/2, ????, mPaint);

    }

    现在我不知道在drawText的以????标记的参数中要放什么,即我不知道如何垂直对齐文本。

    就像是

    ???? = topLeftY +高度/ 2 + fontHeight / 2-fontHeight / 8;

    看起来或多或少都可以,但是必须有更好的方法。

    8个解决方案

    104 votes

    以top和0为中心的示例:

    private final Rect textBounds = new Rect(); //don't new this up in a draw method

    public void drawTextCentred(Canvas canvas, Paint paint, String text, float cx, float cy){

    paint.getTextBounds(text, 0, text.length(), textBounds);

    canvas.drawText(text, cx - textBounds.exactCenterX(), cy - textBounds.exactCenterY(), paint);

    }

    为什么top无法正常工作?

    top = 0.

    top = 0

    当top为0时,这些结果只会产生相同的结果。某些大小的字体或其他大小的字体可能会出现这种情况,但并非所有大小的字体都可能出现这种情况。

    weston answered 2020-07-05T15:53:30Z

    25 votes

    textY = topLeftY + height/2 - (mPaint.descent() + mPaint.ascent()) / 2

    从“基线”到“中心”的距离应为-(mPaint.descent() + mPaint.ascent()) / 2

    QQchurch answered 2020-07-05T15:53:49Z

    21 votes

    根据steelbytes的响应,更新后的代码如下所示:

    void drawHelloRectangle(Canvas c, int topLeftX, int topLeftY, int width, int height) {

    Paint mPaint = new Paint();

    // height of 'Hello World'; height*0.7 looks good

    int fontHeight = (int)(height*0.7);

    mPaint.setColor(COLOR_RED);

    mPaint.setStyle(Style.FILL);

    c.drawRect( topLeftX, topLeftY, topLeftX+width, topLeftY+height, mPaint);

    mPaint.setTextSize(fontHeight);

    mPaint.setColor(COLOR_BLACK);

    mPaint.setTextAlign(Align.CENTER);

    String textToDraw = new String("Hello World");

    Rect bounds = new Rect();

    mPaint.getTextBounds(textToDraw, 0, textToDraw.length(), bounds);

    c.drawText(textToDraw, topLeftX+width/2, topLeftY+height/2+(bounds.bottom-bounds.top)/2, mPaint);

    }

    gauravjain0102 answered 2020-07-05T15:54:10Z

    15 votes

    由于在Y处绘制文本意味着文本的基线将比原点向下Y像素,因此要将文本居中在(width, height)尺寸的矩形内时需要做的是:

    paint.setTextAlign(Paint.Align.CENTER); // centers horizontally

    canvas.drawText(text, width / 2, (height - paint.ascent()) / 2, paint);

    请记住,上升为负(解释负号)。

    这没有考虑到下降,通常这是您想要的(上升通常是上限在基线上方的高度)。

    Pierre-Luc Paour answered 2020-07-05T15:54:40Z

    9 votes

    使用mPaint.getTextBounds(),您可以询问绘制文本时的大小,然后使用该信息可以计算要绘制文本的位置。

    SteelBytes answered 2020-07-05T15:55:00Z

    6 votes

    public static PointF getTextCenterToDraw(String text, RectF region, Paint paint) {

    Rect textBounds = new Rect();

    paint.getTextBounds(text, 0, text.length(), textBounds);

    float x = region.centerX() - textBounds.width() * 0.4f;

    float y = region.centerY() + textBounds.height() * 0.4f;

    return new PointF(x, y);

    }

    用法:

    PointF p = getTextCenterToDraw(text, rect, paint);

    canvas.drawText(text, p.x, p.y, paint);

    Exterminator13 answered 2020-07-05T15:55:20Z

    1 votes

    在尝试解决我的问题时,我偶然发现了这个问题,@ Weston的答案对我来说很好用。

    如果是Kotlin:

    private fun drawText(canvas: Canvas) {

    paint.textSize = 80f

    val text = "Hello!"

    val textBounds = Rect()

    paint.getTextBounds(text, 0, text.length, textBounds);

    canvas.drawText(text, cx- textBounds.exactCenterX(), cy - textBounds.exactCenterY(), paint);

    //in case of another Rect as a container:

    //canvas.drawText(text, containerRect.exactCenterX()- textBounds.exactCenterX(), containerRect.exactCenterY() - textBounds.exactCenterY(), paint);

    }

    N. Osil answered 2020-07-05T15:55:45Z

    -1 votes

    这是任何人寻找的SkiaSharp C#扩展方法

    public static void DrawTextCenteredVertically(this SKCanvas canvas, string text, SKPaint paint, SKPoint point)

    {

    var textY = point.Y + (((-paint.FontMetrics.Ascent + paint.FontMetrics.Descent) / 2) - paint.FontMetrics.Descent);

    canvas.DrawText(text, point.X, textY, paint);

    }

    Benoit Jadinon answered 2020-07-05T15:56:06Z

    展开全文
  • input{vertical-align:middle;} 转载于:https://www.cnblogs.com/xsffliu/p/7146560.html
  • iOS上如何让按钮文本对齐问题
  • 通常情况下,想要快速对齐文字,利用“调整宽度”和“查找和替换”功能,就能巧妙解决,是不是很好奇如何实现的呢?赶紧来看看吧!*********Word中文字对齐这个问题,绝大多数人都会遇到,但是懂得巧妙解决...
  • PPT中如何让文本两端对齐

    万次阅读 2011-10-24 11:56:53
    一般在我们默认下载的各种模板中,标题或者文字过长的时候都会出现一个问题,就是在占位符文本框中,默认的对齐方式是左对齐,造成了右端的文本和标题参差不齐,像狗牙一样。今天通过查找发现了这个问题的解决方法 ...
  • 这行代码是没有效果的,这只是标签中的文本对齐,但并没有改变标签在按钮中的对齐方式。 所以,我们首先要使用 button.contentHorizontalAlignment  = UIControlContentHorizontalAlignmentLeft ; 这行代码...
  • 当我们设计表单文本框布局时,希望布局好看...下边是一个例子 如何修改css实现文本框和前边字体右对齐。 HTML代码: 无标题文档 body { font:12px/19px Arial, Helvetica, sans-serif; color:#666;} form
  • // button.titleLabel.... 这行代码是没有效果的,这只是标签中的文本对齐,但 并没有改变标签在按钮中的对齐方式。 所以,我们首先要使用 button. contentHorizontalAlignment  =  ...
  • 在做UI界面的时候一直困惑与如何让button的文字左对齐展示,今天重新遇到。决定彻底解决问题 首先我们会想到以下的代码 button.titleLabel.textAlignment = NSTextAlignmentLeft; 这行代码是没有效果的。这...
  • 目标:Android> = 1.6在纯画布上。...我想让文本在视觉上在矩形的中心。所以让我们试试:void drawHelloRectangle(Canvas c, int topLeftX,int topLeftY, int width, int height) {Paint mPain...
  • android:gravity="right"。gravity属性是组件内容的对齐方式的设置属性。其他左对齐,居中什么的,都是这个。注意区分layout_gravity,是组件本身相对于其父...比如textview右对齐。android:layout_gravity="right

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 236
精华内容 94
关键字:

如何让文本对齐