相关疑难解决方法(0)

Android 4.2.1错误字符字距调整(间距)

使用CanvasdrawText()方法时,我在Android 4.2.1上看到了不同的渲染.

低于4.2:

在此输入图像描述

对于Android 4.2.1(Nexux 7),我得到:

在此输入图像描述

正如你所看到的文字消费非常紧张.似乎是4.2.1中引入的字距调整问题.用于绘制文本的Paint并不特别:

titlePaint = new Paint();
titlePaint.setAntiAlias(true);
titlePaint.setColor(0xffffffff);
titlePaint.setTextSize(0.125f);
titlePaint.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
titlePaint.setTextAlign(Align.CENTER);
titlePaint.setLinearText(true);
Run Code Online (Sandbox Code Playgroud)

如果我不使用,titlePaint.setLinearText(true)我会在4.2.1上看到一个奇怪的结果,你可以看到:

Nexus 7上的Android 4.2:canvas.drawText()无法正常工作

编辑:

这个奇怪的行为已经报告给Android团队:http://code.google.com/p/android/issues/detail?id = 39755但它仍然不是"官方"问题.

编辑(2):

一些谣言声称问题是textSize <1.0f ...

user-interface android kerning android-4.2-jelly-bean

10
推荐指数
2
解决办法
3452
查看次数

Android 4.2 RadioButton android:drawableLeft bug?

当使用android:drawableLeft时,Android 4.2无法正确显示RadioButton.drawableRight没问题.

左侧的drawable与Radio按钮图形重叠.并且至少Android 2.2-4.1似乎可以使用drawableLeft.

你知道解决方法吗?以编程方式设置drawableLeft无法解决此问题.

4.2 Android问题

4.2问题

4.1 Android正确渲染(至少Android 2.2-4.0也正确渲染)

4.1是对的

Android XML布局代码:

<RadioButton
    android:id="@+id/radio_cloud_dropbox"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="10dp"
    android:drawableLeft="@drawable/dropbox_logo"
    android:checked="true"
    android:text="@string/lbl_cloud_dropbox" />
Run Code Online (Sandbox Code Playgroud)

android radio-button

8
推荐指数
2
解决办法
3364
查看次数

Android 4.1中的输出不同

我在Android 2.3和Android 4.1上运行我的程序,但我的应用程序的图片在android 4.1中显示得非常小:

在此输入图像描述

我删除<uses-sdk android:minSdkVersion="5" android:targetSdkVersion="14" />manifest.xml ,我的应用程序完美地工作:

在此输入图像描述

但我不想删除 <uses-sdk android:minSdkVersion="5" android:targetSdkVersion="14" />

我的问题在哪里?

我的代码摘要是:

public class MapCanvas extends ImageView
{    
    ...

    public MapCanvas(Context context) 
    {
        super(context); 
    }

    public MapCanvas(MainActivity context, Bundle state) 
    {
        super(context);                 

        this.context = context; 

        ... 
    }               

    ...

    @Override
    protected void onDraw(Canvas canvas) 
    {                               
        super.onDraw(canvas);               

        ...

        //Paint Offset X, Y, Zoom
        this.paint.setColor(Color.rgb(51, 51, 51)); 
        this.paint.setFakeBoldText(true);
        this.paint.setTextSize(15);
        String text = "X:" + OFFSET_X + ", Y:" + OFFSET_Y + ", Zoom:" + MapZoom.Zoom;                                                     
        canvas.drawText(text, …
Run Code Online (Sandbox Code Playgroud)

eclipse android android-manifest

5
推荐指数
1
解决办法
145
查看次数

DrawText只在Jelly Bean 4.2上绘制一个字符串字符

好的,这让我疯了.我正在使用画布在我的应用程序中绘制一个仪表.它还会在散列标记上绘制数字,并在整个标尺上绘制一些水平文本.这一切都适用于所有版本的Android,最高可达4.2.在4.2中,它只从它应该写的文本中绘制一个字符(它看起来是中间字符).例如,如果我的文本读取为12345,则只写入3.如果是两位数,则仅绘制第一个数字.我在4.2模拟器和带有4.2.1的Nexus 4上看到了这种行为.我阅读了有关默认情况下打开的硬件加速的所有内容,并且它会导致某些Paint和Canvas功能出现问题.我已插入代码以关闭drawText调用的硬件加速,但它没有帮助.

这是我的油漆代码:

titlePaint1 = new Paint();
titlePaint1.setColor(Color.WHITE);
titlePaint1.setAntiAlias(true);
titlePaint1.setTypeface(Typeface.DEFAULT_BOLD);
titlePaint1.setTextAlign(Paint.Align.CENTER);
titlePaint1.setTextSize(0.085f);
Run Code Online (Sandbox Code Playgroud)

这是调用绘制文本的方法:

@SuppressLint("NewApi")
private void drawTitle1(Canvas canvas) {
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
        setLayerType(View.LAYER_TYPE_SOFTWARE, titlePaint1);

    canvas.drawText(title1, 0.5f, 0.72f, titlePaint1);
}
Run Code Online (Sandbox Code Playgroud)

我把它传递给有效的画布,宽度和高度都很完美.在画布上绘制的所有其他内容都显示正常,并且在绘制测量仪的组件之前,还有其他三个函数调用,如上面的函数.这只是drawText的一个问题.我知道这与4.2中的更改有关,我不认为这个drawText问题与硬件加速有关.我只能在谷歌上找到一些关于4.2的Canvas问题的结果,但没有任何帮助我解决我的问题.任何想法我如何解决这个问题并使文本正确显示?

android android-canvas android-4.2-jelly-bean

4
推荐指数
1
解决办法
2314
查看次数