Articles of android custom view

材料设计中的animationresize视图

如果不涉及layoutParams,是否有其他方法可以resize,折叠或展开视图? 我在新的Material Design和新的Android Dialer应用程序的一些video中看到了animation。 Google表示材料可以轻松改变形状,大小,旋转,颜色等……但我找不到任何东西。 有向后兼容性吗? 到目前为止,为了resize,折叠或展开视图,我们必须使用layoutParams,例如: public static void collapse(final View v) { final int initialHeight = v.getMeasuredHeight(); Animation a = new Animation() { @Override protected void applyTransformation(float interpolatedTime, Transformation t) { if(interpolatedTime == 1){ v.setVisibility(View.GONE); }else{ v.getLayoutParams().height = initialHeight – (int)(initialHeight * interpolatedTime); v.requestLayout(); } } @Override public boolean willChangeBounds() { return true; […]

自定义ViewGroup焦点处理

假设我有一个可自由聚焦的自定义ViewGroup,并且有一些可以集中注意力的子视图(Android机顶盒的自定义垂直菜单应该在远程控制器上作出反应)。 每当自定义ViewGroup获得焦点时,我都需要将焦点传递给一些子视图。 我将descendantFocusability设置为OnFocusChangeListener并将OnFocusChangeListener设置为自定义ViewGroup,但从不调用OnFocusChangeListener.onFocusChanged() 。 它看起来像beforeDescendants没有像我预期的那样工作。 实际设置afterDescendants与设置afterDescendants工作方式相同 – 焦点由最近的子视图进行,自定义ViewGroup没有机会决定应该关注哪个子视图。 我怎样才能达到理想的行为? 在ViewGroup处理焦点的最佳实践是什么?

为什么自定义复合视图中的EditText正在重用另一个复合视图实例中输入的文本?

我正在尝试编写由TextView和EditText ,_compound_view.xml_组成的自定义复合视图: 这是扩展LinearLayout的类: public class CompoundView extends LinearLayout { public CompoundView(Context context, AttributeSet attrs) { super(context, attrs); readAttributes(context, attrs); init(context); } public CompoundView(Context context) { super(context); init(context); } private void init(Context c) { final LayoutInflater inflater = (LayoutInflater) c .getSystemService(Context.LAYOUT_INFLATER_SERVICE); inflater.inflate(R.layout.compound_view, this); } } 现在,如果我在_activity_main.xml_中使用其中2个View : 并且在活动代码中我只膨胀RelativeLayout,而不管理onSaveInstanceState: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); […]

Recyclerview:收听填充点击事件

我有一个水平的RecyclerView其中leftPadding = 48dp , topPadding = 24dp , clipToPadding = false 。 它从左侧的空白区域开始,但是当用户滚动列表时,其项目将在该(先前为空)空间上绘制。 顶部空间始终为空。 此RecyclerView位于FrameLayout内,其foreground = selectableItemBackground 。 我的问题来自于RecyclerView消耗并忽略左侧和顶部空间的触摸,这意味着当连接到FrameLayout或RecyclerView时,不会触发OnClickListener 。 我已经在RecyclerView上尝试使用clickable = false和focusable = false ,但它不起作用。 我在找什么: 可滚动的RecyclerView 可点击的RecyclerView项目 单击RecyclerView’s空白空间时, FrameLayout单击事件 (替代3)可点击的RecyclerView’s空白区域 编辑:我创建了一个简单的项目,显示我正在谈论的问题: https : //github.com/dadino/recyclerviewemptyspacestest有2个提交,在第一个我试图抓住父视图的点击,在第二个我试图抓住RecyclerView本身的点击。 它们都不起作用。

如何在ADT的图形布局编辑器中调试自定义视图

如何使用ADT Eclipse插件在布局XML的图形预览中调试自定义视图? 我编写了一个自定义视图,将其放在布局XML中,我可以在ADT图形布局编辑器中预览它。 我可以查看自定义视图,例如Google员工在Google I / O 2011中的表现:Android开发工具 。 但是,我的自定义视图在预览中表现不View.isInEditMode()模拟器/设备没问题,但我没有使用View.isInEditMode() )。 我认为variables的值有误,但我无法确认。 我试过了: android.util.Log.d() LogCat或Console没有输出 System.out.println() LogCat或Console没有输出 Toast.makeText().show() android.widget.Toast.show NullPointerException 在我的自定义视图中设置断点 在Eclipse中不会中断 throw new IllegalStateException(debugMessage) ( throw new IllegalStateException(debugMessage) ) debugMessage不会出现在Error Log 通过((Activity)getContext()).setTitle(debugMessage)设置活动标题((Activity)getContext()).setTitle(debugMessage) 没有效果 设置窗口标题((Activity)getContext()).getWindow().setTitle(debugMessage) NullPointerException ( window为null ) 动态添加TextView final TextView textView = new TextView(getContext()); textView.setText(debugMessage); this.addView(textView); 显示debugMessage但我的布局已毁坏 仅在自定义视图是ViewGroup时才有效

SherlockActionBar:如何针对actionBar调整CustomView

题: 我怎么能取回头衔? 这是截图(缺少标题): 操作栏设置: ActionBar actionBar = getSupportActionBar(); actionBar.setTitle(“My Title”); actionBar.setIcon(drawable.dropdown_user); View mLogoView = LayoutInflater.from(this).inflate(R.layout.mLogoView, null); actionBar.setCustomView(mLogoView); actionBar.setDisplayShowCustomEnabled(true); actionBar.setDisplayShowTitleEnabled(true); actionBar.setDisplayHomeAsUpEnabled(true); mLogoView.xml:

Android Canvas清晰透明

我试图从canvas上“擦除”。 就像清理canvas的非常简单的测试一样,我实现了以下内容: @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawColor(Color.argb(140, 0, 0, 0)); canvas.drawColor(0, Mode.CLEAR); } Color.argb(140, 0, 0, 0)将此视图的视图设置为灰色。 drawColor(0, Mode.CLEAR)使屏幕完全变黑,而不是删除之前应用的调光。 这个想法来自这里

使用View.BaseSavedState覆盖View.onSaveInstanceState()和View.onRestoreInstanceState()?

假设您希望从现有的View实现派生自己的View类,添加一些值,从而维护一些以有意义的方式表示View状态的variables。 如果您的View会像其他人一样自动保存其状态(如果分配了ID),那么您可能希望覆盖onRestoreInstanceState()和onSaveInstanceState() 。 当然,您需要调用基类的相应方法,并且需要将状态信息与基类的信息组合在一起。 显然,唯一安全的方法是将超类’ Parcelable包装在一个自己的Parcelable这样键就不会混淆了。 现在有View.BaseSavedState及其有趣的getSuperState()方法,但我不知道如何真正增加价值,只是将基类’ Parcelable与派生的View的状态值一起存储并返回它。 另一方面,也许某些其他系统组件会期望所有InstanceState信息都是View.AbsSavedStatetypes(例如,可以调用getSuperState() )? 您愿意分享的任何经历?

在android的CalendarView小部件中更改所选日期的颜色

如何在android提供的CalendarView小部件中更改所选日期的颜色。 我似乎没有在文档中find任何方法。 我可以使用setSelectedDateVerticalBar属性更改VerticalBars,但我想设置一个背景颜色,如图中所示。 我想设置左边的颜色和外观,但我能得到的就是右边的颜色和外观。 CalendarView库是如此糟糕的构建? 任何帮助是极大的赞赏。

如何在android中使用带有canvas的Path(android.graphics.Path)?

我正在开发一个自定义视图,它实现像圆形菜单这样的Catch应用程序。 花了很多时间后,我取得了一些进展,完成了多色的外半圆。 现在,阅读Catch应用程序的开发人员为他的查询提供的答案,我遇到了Path类。 Google Android Developer页面没有提供足够的材料来理解和熟悉Path。 所以,请 ? 任何人 ? 提前致谢。