【发布时间】:2015-12-23 14:42:04
【问题描述】:
我用这个方法给视图充气:
public TabViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.tabs_layout, parent, false);
return new TabViewHolder(view);
}
由于“False”,我的 LinearLayout 没有附加到它的父级,因此没有父级,我不能使用 Layer_Weight(我用 view.getParent() 进行了测试。它返回 null)。因为当我将 Layer_Weight 与“Layer_Width = 0dip”结合使用时,LinearLayout 消失了。
如果我使用“True”作为第三个参数(view.getParent() 返回父级),我会收到此错误:
"指定的孩子已经有一个父母。您必须先在孩子的父母上调用 removeView()。".
这是父母:
<android.support.v7.widget.RecyclerView android:id="@+id/tabBar" style="@style/tabBar"/>
这是父样式:
<style name="tabBar">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">0dip</item>
<item name="android:layout_weight">0.1</item>
<item name="android:weightSum">1</item>
<item name="android:background">@color/headerBg</item>
</style>
这是LinearLayout,子样式:
<style name="tabLayout">
<item name="android:layout_width">0dip</item>
<item name="android:layout_height">match_parent</item>
<item name="android:layout_weight">0.5</item>
<item name="android:orientation">horizontal</item>
<item name="android:gravity">center_vertical</item>
</style>
这是孙子,TextView:
<style name="tabItem">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
</style>
我如何设置 LinearLayout 的宽度,它是父级的一半?
提前欣赏。
【问题讨论】:
-
问题是您的视图不会显示为
RecyclerView的子视图 - 它们显示为您的布局管理器创建的视图的子视图。您必须为它们设置重量总和,但您不能。你想要达到什么目的?对我来说,如果您将整个RecyclerView的宽度设置为其父级的一半宽度,您的问题似乎会得到解决 -
谢谢你。我有一个片段容器和一些要加载的片段。其中一些片段会随着选项卡之类的东西而改变,但其他片段会随着菜单而改变,并且这些片段内部没有选项卡。我将 recyclerView 用作选项卡容器,并且在一个屏幕中应该只有两个宽度相等的选项卡,并且 recyclerView 应该是水平的。我已经在 recyclerView 中使用了 layer_weight 和 layer_height。如何将它与 layer_width 一起使用?
标签: android android-linearlayout android-recyclerview android-inflate