Articles of android view

WebView和GridView进入ScrollView,View太大而无法适应绘图缓存

我有布局内存问题。 当我有一个大型webview时,它没有显示任何内容,并且logcat显示“View太大而无法适应绘图缓存”。 布局是:

如何更改listview“滚动结束”拖动颜色的颜色?

我有一个包含大量项目的ListView。 如果尝试向上滚动ListView,当它已经位于列表的顶部时,Listview中会出现以下橙色渐变。 我需要将其更改为灰色。 我该怎么做呢?

如何避免View.getDrawingCache()中的空指针?

我的应用有此代码段 mView.setDrawingCacheEnabled(true); mBitmap = Bitmap.createBitmap(mView.getDrawingCache()); 其中mView是FrameLayout的自定义子类的实例。 该应用程序已经运行了6个月,成千上万的用户。 最近我收到了一些关于传递给createBitmap()的空指针的报告(可能来自同一个用户,但我无法确认)。 我不知道用户使用的硬件或Android版本。 什么可以导致getDrawingCache()返回null,即使我在它之前启用了缓存? 它与新手机的硬件加速有关吗? 是因为位图的ram不足吗? 还要别的吗? 可以预防吗? 编辑:我在这里find了这个解决方案http://tinyurl.com/7yranvj 。 这是一个合理的解决方法吗? mBitmap = Bitmap.createBitmap(mView.getWidth(), mView.getHeight(), Bitmap.Config.ARGB_8888); final Canvas canvas = new Canvas(mBitMap); mView.draw(canvas);

可以在animation开始时更改ObjectAnimator结束值吗?

我有一个对象animation师启动,我想有时在animation启动时更改结束值,但没有停止并重新启动它。 怎么能实现这一目标? 我在谷歌找不到任何信息。 样品: XMovement = ObjectAnimator.ofFloat(view, “x”, startX, endX); XMovement.setDuration(ANIMATION_TIME); XMovement.start(); 我想在animation启动时实时更改endX值。 谢谢

是否有与RecyclerView相同的addHeaderView?

我正在为回收者视图寻找相当于addHeaderView的东西。 基本上我想要一个带有2个按钮的图像作为标题添加到列表视图中。 是否有不同的方法将标题视图添加到回收站视图? 指导的一个例子会很有帮助 编辑2(添加片段布局): 添加日志语句后,似乎getViewType只接收到0的位置。这导致onCreateView只加载一个布局: 10-26 16:32:53.766 5449-5449/co.testapp I/logger info﹕ Adapter-> getItemCount: 5 10-26 16:32:53.766 5449-5449/co.testapp I/logger info﹕ Adapter-> getItemCount: 5 10-26 16:32:53.766 5449-5449/co.testapp I/logger info﹕ Adapter-> getItemCount: 5 10-26 16:32:53.766 5449-5449/co.testapp I/logger info﹕ Adapter-> getItemCount: 5 10-26 16:32:53.766 5449-5449/co.testapp I/logger info﹕ Adapter-> getItemCount: 5 10-26 16:32:53.766 5449-5449/co.testapp I/logger info﹕ Adapter-> getItemCount: 5 10-26 […]

如何调暗/模糊部分屏幕?

我知道我们可以调暗/模糊屏幕,如本文所示。 我应该怎么做才能使其中的一部分变暗/模糊,留下一个(或多个)视图而没有任何效果,这样整个屏幕就会产生高亮显示效果? 此外,即使我在当前屏幕上进行对话,它是否仍然有效,以便对话框和突出显示的视图保持不变?

Android RatingBar对某些设备有“坏”阈值,修复?

我有一个RatingBar的标准实现。 5星,1步长。 我注意到我在某些设备或品牌上遇到了问题:三星,Nexus,或许更多…但我在索尼和LG设备上没有问题,也许在这里也有更多问题。 问题是选择值时的精度非常差。 似乎如果我通过评级中间的抽奖,它将填补以下“明星”。 它似乎是这些设备的门槛,而这正是它的方式。 LG和索尼的行为方式是,当你通过两个“星星”之间一半的距离时,它就会填满下一个星星。 那么,有什么办法可以防止这种情况发生吗?

自定义XML属性,没有自定义View in Fragment

我正在尝试在现有View中添加自定义XML属性 将它们添加到自定义视图并不是一件大事,但我不知道如何在“基本”视图中访问这些属性(例如TextView,LinearLayout,ImageView ……) 当涉及片段和/或图书馆项目时,这将更加困难 到目前为止,这是我的代码 海关属性定义和XML(attrs.xml和布局): 由于我在片段上对此进行了充气(因此没有onCreate与attrs arg!),尝试获取2个sw自定义属性的唯一方法是: 将自定义LayoutInflater.Factory设置为onCreateView中的Fragment LayoutInflater @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); LayoutInflater layoutInflater = inflater.cloneInContext(inflater.getContext()); layoutInflater.setFactory(new StarWarsLayoutFactory()); View fragmentView = layoutInflater.inflate(R.layout.jedi, container, false); ((TextView) fragmentView.findViewById(android.R.id.jedi)).setText(“Yep”); return fragmentView; } 尝试在自定义LayoutInflater.Factory上获取自定义属性: public class StarWarsLayoutFactory implements Factory { @Override public View onCreateView(String name, Context context, AttributeSet […]

Tabhost-在Android选项卡中设置徽章位置

我是徽章概念的新手。 在我的应用程序中,我想在一个选项卡上显示徽章。 为此,我使用了android-viewbadger.jar文件Android ViewBadger它可以正常使用4个标签, TabWidget tabs = (TabWidget) findViewById(android.R.id.tabs); badge1 = new BadgeView(this, tabs, 1); badge1.setText(“155”); badge1.setBadgePosition(BadgeView.POSITION_BOTTOM_RIGHT); badge1.toggle(); 当我在这里添加一个标签时,它看起来像这样 我已经使用这些徽章属性 badge1.setPadding(left, top, right, bottom); badge1.setTextSize(15); badge1.setBadgeMargin(5,5); badge1.setWidth(10);

Drawable in View被压扁了

问题与疑问: 我目前有一个视图寻呼机,里面只有2页/视图,水平相邻。 我的观点是自定义的,它以低不透明度/ alpha值绘制双色渐变和顶部的图像。 我发现当我在屏幕上滑动以从第一个视图/页面移动到第二个视图/页面或反之亦然时,图像会被压扁。 如何阻止这种情况发生,并正常绘制它们? 例: 左侧图像显示可见的第一个视图, 预刷卡 ; 右图显示了两个视图, 中途通过滑动 。 码: 我有一个我之前设置的DrawablevariablesoverlayImage ,除了设置不透明度之外,我没有做任何其他事情。 @Override protected void onDraw(Canvas canvas) { p.setShader(new LinearGradient(0, 0, 0, getHeight(), startColor, endColor, Shader.TileMode.MIRROR)); canvas.drawPaint(p); //Pretty sure the mistake is around these two next lines overlayImage.setBounds(canvas.getClipBounds()); overlayImage.draw(canvas); }