相关疑难解决方法(0)

如何使按钮的角落圆?

我想做一个button圆角.有没有一种简单的方法可以在Android中实现这一目标?

android rounded-corners android-button

429
推荐指数
13
解决办法
52万
查看次数

如何以编程方式创建android形状背景?

如何以编程方式创建此形状?

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:padding="10dp"
    android:shape="rectangle">

    <solid android:color="#e67e22"/> 
    <corners
        android:topLeftRadius="0dp"
        android:topRightRadius="0dp"
        android:bottomLeftRadius="5dp"
        android:bottomRightRadius="5dp"/>
</shape>
Run Code Online (Sandbox Code Playgroud)

我尝试过这个简单的功能,可以获得角落,颜色和设置形状:

    LinearLayout linearLayout = (LinearLayout) findViewById(R.id.category_header);

    GradientDrawable drawable = (GradientDrawable) linearLayout.getDrawable();

    float[] values = { 0.2f, 0.2f, 0.2f, 0.2f };
    drawable.setCornerRadii(values);
Run Code Online (Sandbox Code Playgroud)

但我得到了这个错误:

对于LinearLayout类型,方法getDrawable()未定义

android android-layout

44
推荐指数
5
解决办法
4万
查看次数

你会如何在Android中创建一个popover视图,比如Facebook评论?

我想知道是否有人知道如何在Facebook Android应用程序中创建类似Facebook的弹出视图以供评论.

这就是我的意思:

在此输入图像描述

除了可以拖动以解除它的句柄,它是一个原生的Android UI控件还是Facebook自己实现了这个?

android android-layout android-fragments

23
推荐指数
2
解决办法
2万
查看次数

绘制带圆角的LinearLayout

我正在尝试实现一个使用圆角绘制自己的LinearLayout子类.根据我的研究,我设置setWillNotDraw(false)并覆盖onDraw()在画布上绘制一个圆角矩形:

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

    int sc = canvas.saveLayer(0, 0, getWidth(), getHeight(), drawPaint, Canvas.MATRIX_SAVE_FLAG | Canvas.CLIP_SAVE_FLAG | Canvas.HAS_ALPHA_LAYER_SAVE_FLAG
            | Canvas.FULL_COLOR_LAYER_SAVE_FLAG | Canvas.CLIP_TO_LAYER_SAVE_FLAG);
    canvas.drawRoundRect(bounds, mCornerRadius, mCornerRadius, roundPaint);
    canvas.restoreToCount(sc);
}
Run Code Online (Sandbox Code Playgroud)

哪里:

drawPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
drawPaint.setColor(0xffffffff);
drawPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));

roundPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
roundPaint.setColor(0xffffffff);
Run Code Online (Sandbox Code Playgroud)

DST_IN这里似乎是正确的选择(根据APIDemos示例),但应该是透明的区域(圆形的)具有黑色背景,并且子项的角仍然可见.这是使用Android 4.2.2的Galaxy Nexus的结果:

例

任何提示?

编辑:这是我想要实现的,抱歉photoshopping的粗糙:)

在此输入图像描述

编辑2:我向GitHub添加了一个可运行的示例项目:https://github.com/venator85/RoundClippingLayout

谢谢 ;)

android android-canvas

12
推荐指数
3
解决办法
3万
查看次数

Android: how to clip only top rounded corners

I'm creating a ScrollView with a FrameLayout inside. I want to design it so that only the top corners are rounded on the ScrollView. I've created a drawable shape as follows

<shape>
    <solid android:color="@color/white"/>
    <corners
        android:bottomLeftRadius="0dp"
        android:bottomRightRadius="0dp"
        android:topLeftRadius="16dp"
        android:topRightRadius="16dp"/>
    <padding android:padding="0dp"/>
</shape>
Run Code Online (Sandbox Code Playgroud)

I've then set the following on the ScrollView

 scrollView.setOutlineProvider(ViewOutlineProvider.BACKGROUND);
 scrollView.setClipToOutline(true);
Run Code Online (Sandbox Code Playgroud)

When i try scrolling, the elements in my FrameLayout end up protruding through the outline of my scrollview

Excuse the drawing, but what i'm looking to achieve

However …

android clip

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

如何在一个drawable中添加圆角我在Android中用作背景?

我有一个特定的drawable,我在我的应用程序中用作背景.它不是纯色.
现在我想为这个drawable添加圆角.

我只发现圆角可用渐变色或纯色作为背景但不是另一种可绘制的形状.

是否有另一种简单的方法可以将圆角添加到drawable中?

layout android rounded-corners

9
推荐指数
1
解决办法
6054
查看次数

Android - 在一个圆圈中显示ExoPlayer

我试图在一个圆圈内显示一个ExoPlayerView,覆盖另一个ExoPlayer(画中画): 在此输入图像描述

我已经尝试将第二个玩家放在一个带圆角的框架内(这个答案这一个)但是玩家将总是逃离父框架并绘制视频的完整矩形.

我发现这个解决方案使用了GLSurfaceView,但是这个解决方案使用的是经典的MediaPlayer而不是ExoPlayer.

android exoplayer

7
推荐指数
1
解决办法
761
查看次数

如何在Android中创建半圆形图像视图

我想创建一个半圆/圆形图像视图.下面是我用来创建圆形图像视图的代码,但我无法创建半圆形图像(半圆)

package com.example.dynamicviews;

import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapShader;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Shader;
import android.graphics.drawable.BitmapDrawable;
import android.util.AttributeSet;
import android.widget.ImageView;

/**
 * Customized Imageview with Rounded Border and Shadow
 * @author Rahul Gupta <rahulg@exzeo.com>
 * @since 2014-01-01
 */
public class RoundedImageView extends ImageView
{
    private int borderWidth = 2;
    private int viewWidth;
    private int viewHeight;
    private Bitmap image;
    private Paint paint;
    private Paint paintBorder;
    private BitmapShader shader;

    public RoundedImageView(Context context)
    {
        super(context);
        setup();
    }

    public …
Run Code Online (Sandbox Code Playgroud)

android

6
推荐指数
1
解决办法
1844
查看次数

元素形状没有必需属性android:layout_height

我正在使用一个shape元素作为视图的背景,就像这个问题一样.我正在使用Android Studio,它告诉我......

Element shape doesn't have required attribute android:layout_height

Element shape doesn't have required attribute android:layout_width

代码如下:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">

<solid android:color="@color/darkBrown"/>
<stroke android:layout_width="match_parent" android:layout_height="match_parent"/>
<corners android:radius="10dip"/>
<padding android:left="0dip" android:right="0dip" android:top="0dip" android:bottom="0dip"/>

</shape>
Run Code Online (Sandbox Code Playgroud)

基本上我的问题是:如果形状在技术上不需要这些属性,为什么会出现此错误?如何告诉android停止将其标记为错误或如何避免它?

谢谢.

已解决:原因是因为它不在drawable文件夹中.

编辑:是的我知道中风部分是不正确的.

xml android

6
推荐指数
1
解决办法
7483
查看次数

向 API 19 设备添加多个 LayerList 导致膨胀错误

我正在尝试创建一个具有两个背景的按钮,我的自定义背景

android:background="@drawable/background_profile_edit_button" + ?attr/selectableItemBackground```
Run Code Online (Sandbox Code Playgroud)

完整按钮:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:layout_constraintTop_toBottomOf="@+id/fragprofile_constraint"
    app:layout_constraintRight_toRightOf="parent"
    android:layout_marginTop="8dp"
    android:layout_marginEnd="16dp"
    android:background="@drawable/background_profile_edit_button"
    android:paddingStart="32dp"
    android:paddingTop="6dp"
    android:paddingEnd="32dp"
    android:paddingBottom="6dp"
    android:text="Edit Profile"
    android:textColor="@color/colorBlackFont"
    android:textSize="12sp"
    android:textStyle="bold"/>
Run Code Online (Sandbox Code Playgroud)

这可以很容易地解决,android:foreground="?attr/selectableItemBackground"但是需要 api 23 而我的最小值是 19。

我还尝试了另一种在 drawable 中使用 layer-list 的方法:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape
            android:shape="rectangle">
            <solid android:color="@color/colorWhite" />

            <stroke
                android:width="1dp"
                android:color="@color/dividerColor" />
            <corners android:radius="3dp"/>
        </shape>
    </item>

    <item
        android:drawable="?attr/selectableItemBackground">
    </item>


</layer-list>
Run Code Online (Sandbox Code Playgroud)

此图层列表在我的更高 API 设备上完美运行。但是它导致我的 API 19 设备崩溃......

android.view.InflateException: Binary XML file line #201: Error inflating class TextView

这个人也有同样的问题,也没有得到答复:

LayerList 错误 API 19:标签需要“drawable”属性或定义可绘制对象的子标签

TLDR:_________________________________________________________

在此处输入图片说明

在 …

android layer-list

6
推荐指数
1
解决办法
283
查看次数