我在这个方法中夸大视图:
protected ASCIIEncoding m_encoding = new ASCIIEncoding();
string QRdata = @"35150909165024000175590000193130072726117830|20150924062259|50.00||hdMEPiER6rjZKyKA+4+voi1nncxsAGFbYsEEqnh04SbvUEI/haUF4GUBPxT6Q2Uhf9f8QYgxiwxWo3GxRrvj4WnNeTYgAqUAYmOANPItNkOw0CppmZ4R8i1ZOlnftVhksCM0zrl4RiKgoazbN44hUu2nQf0W/JLvFXzXu12JlcSThNtmyJ6m9WBsMc/sf9BE14HDoXMyKRIQYt5TkEjilHH9Ffa0saRyUIp+Fji89/Moq8YCCFC+qC44XGxsvNCeeHUNOc1LgPP0DbU1miwpVnrBlEl87RU8Iy0r8fN/fNhbcStkwfTEvhYvZz42nEKHrmGTpGZYkHuTFCNZPq7aCA==";
int store_len = QRdata.Length + 3;
byte store_pL = (byte)(store_len % 256);
byte store_pH = (byte)(store_len / 256);
string txt = m_encoding.GetString(new byte[] { 29, 40, 107, store_pL, store_pH, 49, 80, 48 }); //FUNCTION 180
txt += QRdata;
txt += m_encoding.GetString(new byte[] { 29, 40, 107, 3, 0, 49, 69, 48 });//FUNCTION 169
txt += m_encoding.GetString(new byte[] { 29, 40, 107, 3, 0, 49, 67, 5 });//FUNCTION 167
txt += m_encoding.GetString(new byte[] { 29, 40, 107, 4, 0, 49, 65, 50, 0 });//FUNCTION 165
txt += m_encoding.GetString(new byte[] { 29, 40, 107, 3, 0, 49, 81, 48 });//FUNCTION 181
由于" 错误",我的 LinearLayout 并未附加到它的父级,因此没有父级和我无法使用 Layer_Weight (我使用 view.getParent()进行了测试。它返回null)。因为当我使用 Layer_Weight 和" Layer_Width = 0dip"时, LinearLayout 会消失。
如果我使用" True "作为第三个参数( view.getParent()返回父级),我收到此错误:
" 指定的子项已有父项。您必须先在孩子的父母身上调用removeView()。"。
这是父母:
public TabViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.tabs_layout, parent, false);
return new TabViewHolder(view);
}
这是父母风格:
<android.support.v7.widget.RecyclerView android:id="@+id/tabBar" style="@style/tabBar"/>
这是LinearLayout,子样式:
<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>
这是孙子,TextView:
<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>
如何设置LinearLayout宽度,它的一半是父级?
提前感谢。
答案 0 :(得分:1)
我用这种方式来实现目标。
我将recyclelerView(父项)作为参数发送到tabBarAdapter,它使linearLayout,子项膨胀,并在此适配器中,在onCreateViewHolder方法中将linearLayout的宽度设置为recyclerView的一半宽度。
view.getLayoutParams().width = tabBar.getWidth()/2;
我认为,这是违反&#34; 松散耦合&#34; (我想完全将代码与代码分开)。