Articles of layout inflater

在非Activity类中findViewById

对此我还是比较新的,我在查找非活动类MyLocation中的问题时遇到了问题,该问题在我的活动类MainActivity中使用。 我使用MyLocation获取经度和纬度。 当使用GPS或networking时,我想突出显示一个文本视图。 为此,我需要在非活动类MyLocation中查找文字。 以下是我在MainActivity中调用它的方法: public class MainActivity extends ActionBarActivity implements LocationListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); MyLocation myLocation = new MyLocation(); myLocation.getLocation(this, locationResult); } 在这里,我在MyLocation中尝试查找文本视图: public class MyLocation { LocationManager lm; LocationResult locationResult; private Context context; TextView tvnetwork, tvgps; private int defaultTextColor; LocationListener locationListenerNetwork = new LocationListener() { public void […]

带有膨胀的LinearLayout的意外的LayoutParams

我有一个视图的XML定义,我使用addChild将其添加到更大的容器视图。 它基于LinearLayout ,基本上是这样的: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="52dip" android:background="@drawable/box_bg" android:clickable="true" android:onClick="onTreeBoxClick" android:orientation="horizontal" > <ImageView android:id="@+id/box_photo" android:layout_width="45dip" android:layout_height="45dip" … /> <RelativeLayout android:layout_width="0dip" android:layout_weight="1" android:layout_height="wrap_content" > (剩下的省略 – 可能不相关,因为它基本上按devise工作) 当我创build这些观点时,我发现了以下对我来说很奇怪的行为: 在膨胀视图之后,getLayoutParameters()返回null。 在我调用addChild()将其添加到其父项之后,getLayoutParameters()返回一个有效的对象。 检查LayoutParameters,我发现宽度和高度设置为-2(WRAP_CONTENT),这显然不是我在XML文件中指定的。 当我查看封闭的ImageView的布局参数时,它会读取指定的值。 任何人都可以解释这里发生了什么? 为什么没有注意到我指定的高度? 这并不影响我,因为父视图是一个自定义视图,其中我使用MeasureSpec等强制子视图的最终维度,但是我想了解它!

LayoutInflater有时(随机)膨胀与错误的背景颜色

我用LayoutInflater膨胀一个视图。 我膨胀的RelativeLayout的背景色设置在我的xml文件中。 我在其中一个设备上遇到了一个奇怪的问题:有时(随机)背景颜色是我的colors.xml中的其他(错误)颜色。 有没有人遇到过这个问题? 细节: 我有一个CursorAdapter ListView 。 我只用一个静态项目(所以我认为这不是一个回收问题),使用以下代码充气列表项目: @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { LayoutInflater vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) ; View v = vi.inflate(R.layout.bookmark_item, null) ; //bindView(v, context, cursor) ; Log.wtf("newView", "View color: " + Integer.toString(((ColorDrawable) (((RelativeLayout)v.findViewById(R.id.bookmark_row)).getBackground())).getColor())) ; return v; } 我的layout/bookmark_item.xml : <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="wrap_content" > <RelativeLayout […]

将图标拖放到主屏幕

更新:为了理解我的问题,这里是我需要实现的:将应用程序抽屉中的图标拖到主屏幕( 如果可能的话不在GridView中) 旧的(这只是为了学习如何工作): 我试图实现拖动可点击的图标从一个ListView到没有容器( Listview or Gridview… )的自customView在同一个活动或另一个,这里是一个图片,让你更多地了解: 但是当我把图标放在正确的区域, 我没有看到对象 ,在日志中我看到: I/ViewRootImpl﹕ Reporting drop result: true 在这里我的代码: class MyDragListener implements View.OnDragListener { @Override public boolean onDrag(View v, DragEvent event) { int action = event.getAction(); switch (event.getAction()) { … case DragEvent.ACTION_DROP: LinearLayoutAbsListView itemo = (LinearLayoutAbsListView)findViewById(R.id.paneko); View child = getLayoutInflater().inflate(R.layout.list_item, null); itemo.addView(child); break; case DragEvent.ACTION_DRAG_ENDED: default: break; […]

是否build议检查视图为null与每个findViewById调用?

当使用findViewById对元素进行膨胀时,Android Studio总是会警告我膨胀的视图可能会返回null View v = inflater.inflate(R.layout.fragment_photo_gallery, container, false); 并build议我做一些类似于环绕声的东西,并在空白处加上我的声明: if (v != null) { mGridView = (GridView)v.findViewById(R.id.gridView); } 是否build议在膨胀一个元素之前始终执行提到的空检查? 编辑 :添加lint图片

Systrace里面的VerifyClass是什么意思?

我正在看我的应用程序生成的systrace ,我已经确定了一个太长的框架。 这是由于充气我的项目视图时RecyclerView的onCreateViewHolder造成的。 项目视图与ConstraintLayout一样平坦。 但是下面的systrace报告有很多VerifyClass块,每块需要VerifyClass 。 那VerifyClass块是什么意思?

LayoutInflater的Factory和Factory2有什么不同?

有两个公共接口: Android SDK中的LayoutInflater.Factory和LayoutInflater.Factory2 ,但官方文档不能说这个接口的帮助,甚至是LayoutInflater文档。 从源头上我已经了解到,如果Factory2被设置,那么它将被使用和Factory否则: View view; if (mFactory2 != null) { view = mFactory2.onCreateView(parent, name, context, attrs); } else if (mFactory != null) { view = mFactory.onCreateView(name, context, attrs); } else { view = null; } setFactory2()也有非常简洁的文档: /** * Like {@link #setFactory}, but allows you to set a {@link Factory2} * interface. */ public […]

直接调用LayoutInflater和不调用之间有什么区别?

我经历了一些教程,在Android Doc中,它说实例化时不直接访问LayoutInflater。 来自Google文档的示例: LayoutInflater inflater = (LayoutInflater)context.getSystemService (Context.LAYOUT_INFLATER_SERVICE); 我经历的教程是这样的: LayoutInflater inflater = LayoutInflater.from(parent.getContext()); 所以我不明白的是除了明显不同的代码之外的区别。 任何解释非常赞赏。 我认为Android Doc应该是我们所关注的,但我不确定它是否有所作为。

滚动回收站视图时如何防止重复项目

我已经在回收视图里面创build了一行内部,我已经膨胀了两行或更多,但是当我滚动的项目再次得到使用。 我没有得到在哪里回收视图或dynamic删除它我需要一个饲料和他们的意见。对于意见,我需要膨胀布局,以显示它们下面的feed为getCommentInflaterView方法创build。 但使用getCommentInflaterView()创build的视图会重复。 MyAdapterClass: public class AllFeedsAdapter extends RecyclerView.Adapter<AllFeedsAdapter.ViewHolder> { ArrayList<Data> arrayListAllFeedsData; Comment objComment; Context context; public AllFeedsAdapter(Context context, ArrayList<Data> data) { this.context = context; arrayListAllFeedsData = new ArrayList<>(); arrayListAllFeedsData = data; } @Override public AllFeedsAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { Context context = parent.getContext(); LayoutInflater inflater = LayoutInflater.from(context); // Inflate the custom layout View […]

它膨胀的观点没有保证金

我有这个代码 View item = View.inflate(context, R.layout.item_layout, null); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); layout.addView(item, params); 我的item_layout :(注意部分android:layout_marginTop =“2dip”) <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="wrap_content" android:layout_marginTop="2dip" android:layout_width="fill_parent"> <ImageView android:src="@drawable/pic_unknown" android:id="@+id/image1" android:layout_height="50dip" android:layout_width="50dip" android:padding="5dip"></ImageView> </RelativeLayout> 然后在我的布局中,我看到膨胀的物品清单,但在他们之间没有余量。 我试图用margintop = 10dip仍然没有发生我的观点是,我把它放在布局的价值是不带边缘的计算带有顶部的布局是一样的。 如何在项目之间添加一些空的空间? 我怎样才能在物品之间充满空的空间? 是否有可能膨胀像差距或一些空间的东西? 或者我必须使用像2dip高度或什么的东西膨胀一些空布局的解决方法谢谢