Articles of layout inflater

Android force Fragment重建View

我有一个简单的应用程序有两个片段,当处于横向模式时,两个片段并排显示,并在纵向我显示片段A,然后如果他们选择一个选项,启动一个显示片段B的活动。我的问题是当我我处于纵向模式并显示片段B,如果用户选择了一个菜单选项,我想要刷新或重绘与片段B关联的视图,并且无法理解如何使其工作。 我尝试了getView方法和getLayoutInflater方法,但屏幕没有改变,因为我认为我正在创建一个新视图。 我还试图获得对Fragment A的引用,我认为我可以调用它的例程来构建一个新的片段并替换Fragment B但是因为它没有被显示而无法获得它的引用。 我真正需要做的是强制再次调用onCreateView方法来为新视图充气,但我尝试了几种方法来尝试这样做,但无法再次调用onCreateView。 有关如何做到这一点的想法?

它没有边距而膨胀视图

我有这个代码 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”) 然后在我的布局中,我看到项目列表膨胀,但它们之间没有边距。 我尝试使用margintop = 10dip仍然没有发生我的观点是我在布局中放置的值不是在计算中有或没有边距顶部布局是相同的。 如何在项目之间添加一些空白区域? 如何在物品之间充气? 是否有可能膨胀像空隙或某些空间? 或者我必须使用解决方法,比如用2dip高度或某些东西来膨胀一些空布局谢谢

在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块是什么意思?