Ich habe ein XML-Element erstellt, das automatisch eine Schaltfläche erstellt, und dann eine ScrollView mit einem LinearLayout. Die Taste, wenn gedrückt, soll die Farbe ändern und die Sichtbarkeit der ScrollView ändern. Im Moment ändert sich nur die Farbe der Schaltfläche, aber der Text in der Bildlaufansicht bleibt sichtbar.kann die Sichtbarkeit von ScrollView nicht festlegen
Dies funktionierte vorher, als ich die Schaltfläche und ScrollView durch XML erstellt und onClickListeners
über die onCreate()
Methode in der Hauptaktivität erstellt.
mein Code:
public class AccordionWidget extends LinearLayout{
public AccordionWidget(Context c, AttributeSet attrs) {
super(c, attrs);
final Context context = c;
final Button btn = new Button(context);
final LinearLayout ll = new LinearLayout(context);
final ScrollView sv = new ScrollView(context);
TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.accordion);
LayoutParams btnparams = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
btn.setText(a.getString(R.styleable.accordion_text));
btn.setBackgroundColor(ContextCompat.getColor(context, R.color.button_not_pressed));
LayoutParams llparams = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
llparams.weight = 1f;
LayoutParams swparams = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
btn.setLayoutParams(btnparams);
ll.setOrientation(LinearLayout.VERTICAL);
ll.setLayoutParams(llparams);
sv.setVisibility(View.GONE);
sv.setLayoutParams(swparams);
this.addView(sv);
this.addView(btn);
sv.addView(ll);
btn.setOnClickListener(new OnClickListener() {
boolean btnstate = false;
@Override
public void onClick(View v) {
if (btnstate) {
btn.setBackgroundColor(ContextCompat.getColor(context, R.color.button_pressed));
sv.setVisibility(View.VISIBLE);
btnstate = false;
} else {
btn.setBackgroundColor(ContextCompat.getColor(context, R.color.button_not_pressed));
sv.setVisibility(View.GONE);
btnstate = true;
}
}
});
a.recycle();
}
}
versuchte es, scheint nicht einen Unterschied zu machen. Das würde auch nicht erklären, warum es die Sichtbarkeit nicht ändert, wenn ich den Knopf drücke. danke trotzdem – lenny