标签: custom-view

Android中的美丽描边文字

我知道如何使用自定义视图(EditText或TextView)来描边文字但我无法实现像这样的美丽的东西,这是使用Photoshop完成的.是的,它也有外影.Photoshop中的描边文字

到目前为止我所做的是调整笔画宽度和笔画连接样式.但是,如果我增加笔划宽度,则笔划会发生整个文本.据我所搜索,有一个名为MagicTextView的库,但它也无法提供上述结果.

更新:我根据@pskink的建议调整了一些内容.它现在有效.但是我不能再拖了.如果我拖动EditText,会出现一些像这样的奇怪线条. 文本视图上方的奇怪线条

这是代码:

@Override public void onDraw(Canvas canvas) {
  final int x = this.getLeft();
  final int y = this.getBottom();

  mText = this.getText().toString();

  p.setStrokeWidth(30);
  p.setStyle(Style.STROKE);
  p.setStrokeJoin(Join.ROUND);
  p.setColor(0xffffffff);

  canvas.drawText(mText, x, y, p);

  p.setStyle(Style.FILL);
  p.setColor(0xff000000);

  canvas.drawText(mText, x, y, p);
}
Run Code Online (Sandbox Code Playgroud)

android textview custom-view android-edittext textstyle

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

如何使用属性对自定义视图进行单元测试

我无法为我的自定义视图创建单元测试。我尝试添加一个属性并测试它是否我的自定义视图类正确。

这是我的测试的样子:

@RunWith(AndroidJUnit4.class)
@SmallTest
public class BaseRatingBarMinRatingTest {

    private Context mContext;

    @Before
    public void setUp(){
        mContext = InstrumentationRegistry.getTargetContext();
    }

    @Test
    public void constructor_should_setMinRating_when_attriSetHasOne() throws Exception{
        // 1. ARRANGE DATA
        float minRating = 2.5f;
        AttributeSet as = mock(AttributeSet.class);
        when(as.getAttributeFloatValue(eq(R.styleable.BaseRatingBar_srb_minRating), anyFloat())).thenReturn(minRating);


        // 2. ACT
        BaseRatingBar brb = new BaseRatingBar(mContext, as);


        // 3. ASSERT
        assertThat(brb.getMinRating(), is(minRating));
    }

  // ...

}
Run Code Online (Sandbox Code Playgroud)

哪个得到这个异常:

java.lang.ClassCastException: android.util.AttributeSet$MockitoMock$1142631110 cannot be cast to android.content.res.XmlBlock$Parser
Run Code Online (Sandbox Code Playgroud)

我尝试像本文那样模拟 TypeArray ,但我的观点将模拟的上下文视为 null。

有没有什么好方法可以为自定义视图创建测试用例?

android mockito custom-view android-testing

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

从NIB实例化时调用UIView的方法是什么?

我有一个简单的自定义视图,通过插座连接到NIB.对于这个特定的视图,我想在视图初始化时对视图执行操作,无论它在哪个NIB上.

麻烦的是,在自定义视图上调用(id)init或(id)initWithFrame:(CGRect)框架方法.

当它从NIB实例化时,在UIView上调用哪个方法?我只会使用视图控制器和viewDidLoad方法,除了这个特定的视图出现在很多不同的NIB上.

iphone uiview custom-view

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

如何从自定义视图中访问layout_height?

我有一个自定义视图,我只想访问xml布局值layout_height.

我目前正在获取该信息并在onMeasure期间存储它,但这仅在视图首次绘制时发生.我的视图是XY图,它需要尽早知道它的高度,以便它可以开始执行计算.

The view is on the fourth page of a viewFlipper layout, so the user may not flip to it for a while, but when they do flip to it, I would like the view to already contain data, which requires that I have the height to make the calculations.

Thanks!!!

layout android custom-view

7
推荐指数
4
解决办法
3386
查看次数

带有setContentView的Android ProgressDialog

我已经阅读了很多关于此事的内容,并且看不到之前已经完成或尝试过的人.

所以我有一个扩展ImageView的对象,然后在此我调用一个进度对话框并将进度对话框的内容设置为imageview(即尝试在imageview..view中绘制进度对话框.)

    loadingProgressDialog.setContentView(this); //this is: LoaderImageView extends ImageView        
    loadingProgressDialog.setIndeterminate(true);
    loadingProgressDialog.show();
Run Code Online (Sandbox Code Playgroud)

我收到错误:必须在添加内容之前调用requestFeature()

现在我在大量帖子之前看到过这个错误,是的,答案似乎很明显.我试图设置所有功能:

loadingProgressDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
loadingProgressDialog.requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
loadingProgressDialog.getWindow().requestFeature(Window.FEATURE_PROGRESS);
loadingProgressDialog.getWindow().requestFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
Run Code Online (Sandbox Code Playgroud)

但首先我不明白为什么需要这个?第二,他们都没有工作!

所以问题是我可以将ProgressDialog contentView设置为ImageView吗?如果是这样我有什么问题?

android progressdialog custom-view imageview

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

自定义搜索栏切割边缘

可能重复:
Android SeekBar拇指被剪裁/切断

我按照本教程做了一个自定义搜索栏:http://www.mokasocial.com/2011/02/create-a-custom-styled-ui-slider-seekbar-in-android/

但当我把搜索拇指放在栏的开头或末尾时,其边缘会被切割,如下所示:http: //s2.postimage.org/d9dqrrms/myseekbar.png

我完成了教程所说的内容(只是更改了渐变颜色).怎么了?

android seekbar custom-view

7
推荐指数
2
解决办法
8959
查看次数

如何在执行onLong点击视图后从ViewGroup(FrameLayout)获取特定(自定义)视图的索引

有人可以用我的语法帮助我吗?我正在动态地将一些视图(自定义视图)添加到已经在XML中定义的FrameLayout.那些自定义视图是不同类型或相同类型.我可以在屏幕上添加视图,但无法从ViewGroup中删除特定视图(类型相同或不同).那些自定义视图onTouch().

在这里,我面临着问题:无法触发long click,总是需要touch listener

如果用户在长按时选择一个视图,我必须在这里创建两个选项

  1. 改变背景颜色
  2. 删除视图.

编辑:根据tao建议我可以得到长按视图的索引,如果没有触摸监听器的查看.但我必须实施触控听众以及长按......

我怎样才能做到这一点?

indexing android custom-view viewgroup

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

布局xml中具有自定义视图的空指针异常

这是自定义视图代码,它在使用此视图的XML的布局选项卡中为我提供了空指针异常:

public class BoardView extends View {

    // Drawables for the board boxes, the playable zone
    public Drawable[][] block = new Drawable[20][10];
    // Drawables for the wall (yes, it's done with tiles)
    public Drawable[] wall = new Drawable[102];
    // Drawable for the background, and boolean for drawing it or not
    Drawable mbg;
    boolean bg = false;
    // Context and canvas to be used along the class
    Context context;
    Canvas c;

    /*************************************************/
    /* Class constructor **************************** */
    /*************************************************/
    /* Defines the …
Run Code Online (Sandbox Code Playgroud)

java eclipse android custom-view android-custom-view

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

如何在自定义视图中获取GetGravity()?

无法android:gravity从我的CustomView 获取gravity属性().

XML

<MyCustomView
 ...
 android:gravity="right"
 />
Run Code Online (Sandbox Code Playgroud)

我的自定义视图;

class MyCustomView extends LinearLayout{
 ...
 @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    getGravity(); //Throws method not found exception
    ((LayoutParams)getLayoutParams()).gravity; //This returns the value of android:layout_gravity
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
  }
 ...
}
Run Code Online (Sandbox Code Playgroud)

getGravity(); 抛出方法未找到异常;

((LayoutParams)getLayoutParams()).gravity; 返回android:layout_gravity的值

无论如何我可以从视图中获取引力属性吗?

android custom-view

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

CustomPainter.shouldRepaint() 在 Flutter 中如何工作?

在 Flutter 中,创建CustomPainter时,有一个重写方法,shouldRepaint(),您可以返回 true 或 false...大概是为了告诉系统是否重新绘制视图。

\n

文档中,该方法的描述是:

\n
\n

shouldRepaint(covariant CustomPainter oldDelegate) \xe2\x86\x92 bool 每当向 RenderCustomPaint 对象提供\n自定义绘制委托类的新实例时\n或在使用该对象的新实例创建新的\nCustomPaint 对象时调用\n自定义\npainter委托类(这相当于同一件事,因为后者是根据前者实现的)。[...]

\n
\n

除了它返回一个布尔值之外,我基本上不明白任何其他内容。这让我很头疼!我还怀疑深入研究“自定义画家委托类”或“RenderCustomPaint 对象”的定义不会是一种启发性的体验。

\n

我很困惑,因为:

\n
    \n
  • 我认为我们不必担心小部件何时“应该重新绘制”,因为 Flutter 应该根据其自身复杂的优化决策来决定何时何地重新渲染小部件树。

    \n
  • \n
  • 我认为 Paint() 方法是您定义“这就是该视图如何绘制自身的方式,(无论何时何地有必要)”的地方

    \n
  • \n
  • 我发现的所有示例都只是从该方法返回 false...但我注意到使用 true 与 false 时的不同行为。

    \n
  • \n
  • 如果我们总是返回 false,那么它如何重新绘制呢?(即使是假的,它也会重新绘制)

    \n
  • \n
  • 如果我们唯一可用的逻辑是将“oldDelegate”与(某物?)进行比较,那么为什么我们需要重写该方法呢?

    \n
  • \n
  • 我还没有看到任何示例来演示为什么或如何返回 TRUE,以及为了做出该决定而这样的示例的逻辑是什么样的。

    \n
  • \n
\n

一个有知识的人为什么以及如何决定返回 false?

\n

一个有知识的人为什么以及如何决定回归真实?

\n

谁能像你在和一个 13 岁的孩子(不是 Linus Torvalds)说话一样解释它?

\n

一个简单的代码示例和反例会很棒(而不是详尽的明确解释!)

\n

custom-view flutter flutter-custompainter flutter-custompaint

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