Ich habe folgendes Problem und keinen blassen Schimmer warum die selben Elemnte ( CheckBoxen ) und der selbe Code auf diesen beiden emulierten Geräten so ein Ergebnis liefern...
Gerät links ( Nexus 5 - 4.4.4 - API 19 - 1080x1920 ) Gerät rechts ( Galaxy S2 - 4.1.1 - API 16 - 480x800 )
[Blockierte Grafik: http://preview.slick.pics/FU45m5Sy5.png]
Es werden folgende Layouts nacheinander erstellt und auch in dieser Reihenfolge übereinander gelegt:
ScrollView -> LinearLayout Horizontal - > 1-2 LinearLayout vertical ( bei Tablet 2 ) -> dann alle Checkboxen
Wenn es ein Tablet ist, wird nach der 15ten Checkbox auf dem zweiten LinearLayout vertical weiter ge-added, aber das ist ja unwichtig.
Hier mal die gesamte onCreate(), interessant wird es ab Zeile 79 ( Checkboxen )
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
setRetainInstance(true);
//System.out.println("DigIoCheckBoxFragment.onCreateView: " +mID);
ScrollView scv = new ScrollView(mContext);
scv.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
LinearLayout llv = new LinearLayout(mContext);
LinearLayout llvR = new LinearLayout(mContext);
if (Variables.isTablet) {
// HORIZONTAL LINEAR LAYOUT
LinearLayout llH = new LinearLayout(mContext);
llH.setOrientation(LinearLayout.HORIZONTAL);
LinearLayout.LayoutParams llLP = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT);
llLP.weight = 100;
llH.setLayoutParams(llLP);
// VERTICAL LINEAR LAYOUT LEFT
llv.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams lpVL = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT, 50f);
llv.setLayoutParams(lpVL);
llH.addView(llv);
// VERTICAL LINEAR LAYOUT RIGHT
llvR.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams lpVR = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT, 50f);
llvR.setLayoutParams(lpVR);
llH.addView(llvR);
scv.addView(llH);
}
else { // isPhone
// VERTICAL LINEAR LAYOUT
llv.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams llLP = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT);
llv.setLayoutParams(llLP);
scv.addView(llv);
}
for (int i = 0; i < mElements.size(); i++) {
//System.out.println("Checke Element "+mID+" "+i);
Object o = mElements.elementAt(i);
if ((o != null) && (o instanceof CheckBox)) {
// SEPARATOR
if ((i % 8 == 0) && (i != 0)) {
if (Variables.isTablet && (i == 16)) {
}
else {
View rl = new View(mContext);
LayoutParams rlLP = new LayoutParams(LayoutParams.MATCH_PARENT, 5);
// rlLP.setMargins(100, 0, 100, 0);
rl.setLayoutParams(rlLP);
// FARBVERLAUF GRAFIK
GradientDrawable gd = new GradientDrawable(
GradientDrawable.Orientation.LEFT_RIGHT,
new int[]{0x88616261, 0x00000000});
gd.setCornerRadius(100f);
// rl.setBackgroundColor(Color.parseColor("#d3d3d3"));
rl.setBackgroundDrawable(gd);
if (Variables.isTablet && (i > 15))
llvR.addView(rl);
else
llv.addView(rl);
}
}
CheckBox cbx = (CheckBox) o;
LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
cbx.setLayoutParams(lp);
// cbx.setId(Integer.parseInt(me.getKey().toString()));
// cbx.setText(me.getValue().toString());
// cbx.setOnClickListener(getOnClickDoSomething(cbx));
cbx.setPadding(8, 8, 8, 8);
if (cbx.getParent() != null)
((ViewGroup) cbx.getParent()).removeView(cbx); // hiermit wird der Eintrag "Parent" entfernt, damit dieser wieder neu gesetzt werden kann.
if (Variables.isTablet && (i > 15))
llvR.addView(cbx);
else
llv.addView(cbx);
}
}
return scv;
}
Alles anzeigen