Articles of layout inflater

在android中从XML文件创建View-Object

我只想从xml布局文件中获取一个对象,而不必将其实现到当前布局中。 我知道的方式 LayoutInflater.from(context).inflate(R.layout.myfile, myparent, true); 但执行完上面后,布局将实现并立即显示在我的“myparent”-View中,对吗? 我只想让Object本身获得它的属性等。 也许(但只是可能)稍后将其插入到显示的布局中。 那可能吗? 问候

setContentView和LayoutInflater之间的区别

我正在创建一个包含多个片段的选项卡列表。 我注意到,在main活动中,我使用setContentView来获取布局xml并使用findViewById来获取相应的UI元素配置。 setContentView(R.layout.fragment_tabs); mTabHost = (TabHost)findViewById(android.R.id.tabhost); mTabHost.setup(); mTabManager = new TabManager(this, mTabHost, android.R.id.tabcontent); 但是,在不同的片段类中,我必须使用inflater。 View v = inflater.inflate(R.layout.webview, container, false); WebView myBrowser=(WebView)v.findViewById(R.id.mybrowser); 并且这两个函数都用于获取布局xml来创建一个对象,为什么会有区别? 第一个在onCreate期间使用,第二个在onCreateView期间使用吗? 在什么情况下我应该选择其中之一?

在非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应该是我们所关注的,但我不确定它是否有所作为。