Articles of android custom view

切换到gradle后,android自定义视图属性不起作用

所以我最近迁移到gradle现在我的自定义视图属性返回null 我的项目看起来像这样 –custom_icon_view //保存带有自定义属性的自定义视图的库 – 我的应用程序//这是实际使用自定义视图的主应用程序 在我的布局中,我有如下定义的命名空间: xmlns:iconview=”http://schemas.android.com/lib/be.webelite.iconview” 因为使用apk / res-auto返回错误,无法识别attibutes 这就是我试图获取在xml中定义的图标名称的方法,这用于完美地工作,但现在它没有。 我改变的只是迁移到gradle。 final TypedArray a = context.obtainStyledAttributes(attrs,be.webelite.iconview.R.styleable.icon); icon_name = a.getString(be.webelite.iconview.R.styleable.icon_name); 所以我猜我的gradle.build文件导致了问题? 我把库设置为 apply plugin: ‘android-library’ 结束主应用程序gradle.build为 apply plugin: ‘android’ 这让我头疼2天了:(任何帮助/提示非常适合。 这是我的gradle文件 http://pastie.org/private/h57o8nanydosq0dtm6eiq 这是文件夹结构 http://pastie.org/private/nvbzomx2zeagdpzt8qqjsq 这是我在xml中声明我的视图的方式 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:iconview=”http://schemas.android.com/apk/lib/be.webelite.iconview” android:orientation=”vertical” android:layout_width=”match_parent” android:layout_height=”match_parent” android:background=”@color/background_gray”> IconView> res> values目录中的attrs.xml

减少AlertDialog.Builder组件的字体大小

我使用以下代码创建了一个AlertDialogue : int selectedModeId=0; public void sortTypeModeSelection(){ AlertDialog.Builder alertBuilder=new AlertDialog.Builder(WatchListDetailActivity.this); alertBuilder.setSingleChoiceItems(R.array.watchlist_sorting_modes,selectedModeId, new DialogInterface.OnClickListener(){ public void onClick(DialogInterface dialog, int which) { switch (which){ case 0: selectedModeId=0; break; case 1: selectedModeId=1; break; case 2: selectedModeId=2; break; case 3: selectedModeId=3; break; case 4: selectedModeId=4; break; case 5: selectedModeId=5; break; case 6: selectedModeId=6; break; case 7: selectedModeId=7; break; } […]

Android-如何实现Horizo​​ntal Step进度条

我想实现水平进度条,其步骤如下面的img所示。 我在Android中找不到这样的原生组件。 任何人都可以指导我如何做到这一点?

Android – 在屏幕上移动ImageView(像拖动一样)

我正在尝试创建一个可以在您的设备上移动ImageView的应用程序,例如拖动,当我将75%的ImageView放在屏幕外时显示Toast 。 我一直在阅读有关onTouchListener和onTouchListener ,我已经关注了这个问题 ,但这并不能说服我。 编辑 我目前的代码是: public class MainActivity extends AppCompatActivity implements View.OnTouchListener { int windowwidth; int windowheight; private ImageView mImageView; private ViewGroup mRrootLayout; private int _xDelta; private int _yDelta; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); DisplayMetrics displaymetrics = new DisplayMetrics(); this.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); windowwidth = displaymetrics.widthPixels; windowheight = displaymetrics.heightPixels; mRrootLayout = (ViewGroup) findViewById(R.id.root); […]

从屏幕底部滑动/拖动Android视图

我想在我的应用程序中执行一个视图,我可以从窗口底部滑动(下面的图片更好地解释它)。 我希望视图在某个时刻停止。 视图必须允许再次滑动/拖动到底部。 有什么想法或提示我该怎么做?

Android TabHost上的徽章

我想实现与iPhone中相同的function 我在底部栏中实现了与iPhone相同的自定义Tabhost。 我可以为Normal / Selected状态设置两个Icons,但我需要动态图标,其中包含Image中给出的通知数量。 谢谢

材料设计中的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本身的点击。 它们都不起作用。