2017-10-03 2 views
1

in meiner App verwende ich 3 NumberPickers, um einen RGB-Wert auszuwählen. Aber es ist immer 1 von ihnen ausgewählt, auch wenn die Aktivität geöffnet wird. Auf dem Bild kann man sehen, was ich damit meine.Vermeiden Sie die automatische Auswahl von NumberPicker-Wert

Ich fragte mich, ob dies vermieden werden kann und wenn ja, wie.

Beachten Sie, dass ich nicht die Möglichkeit deaktivieren möchte, auf die Nummer zu klicken, die eine Zahleneingabe hervorruft. Nur halt die automatische Auswahl

Bild angezeigt wird, das Problem (die nicht die Nummer eingegeben kommen verursacht):

example of one NumberPicker getting selected

Vielen Dank im Voraus :)

EDIT:

XML (in einer Ansicht RelativeLayout)

<NumberPicker 
    android:id="@+id/number_picker_R" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/textview2" 
    android:layout_toLeftOf="@+id/number_picker_G" /> 

<NumberPicker 
    android:id="@+id/number_picker_G" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/textview2" 
    android:layout_centerHorizontal="true" 
    android:layout_marginLeft="10dp" 
    android:layout_marginRight="10dp" /> 

<NumberPicker 
    android:id="@+id/number_picker_B" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/textview2" 
    android:layout_toRightOf="@+id/number_picker_G" /> 

Java

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.tab1_presets, container, false); 

    ... (irrelevant code omitted) ... 

    this.mNumberPickerR = rootView.findViewById(R.id.number_picker_R); 
    this.mNumberPickerG = rootView.findViewById(R.id.number_picker_G); 
    this.mNumberPickerB = rootView.findViewById(R.id.number_picker_B); 

    // set min and max values for the numberpickers 
    this.mNumberPickerR.setMinValue(0); 
    this.mNumberPickerR.setMaxValue(255); 
    this.mNumberPickerG.setMinValue(0); 
    this.mNumberPickerG.setMaxValue(255); 
    this.mNumberPickerB.setMinValue(0); 
    this.mNumberPickerB.setMaxValue(255); 

    // set listeners 
    this.mNumberPickerR.setOnValueChangedListener(this); 
    this.mNumberPickerG.setOnValueChangedListener(this); 
    this.mNumberPickerB.setOnValueChangedListener(this); 

    return rootView; 

public NumberPicker getNumberPickerR() { 
    return this.mNumberPickerR; 
} 
public NumberPicker getNumberPickerG() { 
    return this.mNumberPickerG; 
} 
public NumberPicker getNumberPickerB() { 
    return this.mNumberPickerB; 
} 

@Override 
public void onValueChange(NumberPicker numberPicker, int i, int i1) { 
    // get RGB values 
    int R = getNumberPickerR().getValue(); 
    int G = getNumberPickerG().getValue(); 
    int B = getNumberPickerB().getValue(); 

    // call parent activity onColorChanged method 
    ((MainActivity) getActivity()).onColorChanged(R, G, B); 
} 
+0

Sie bitte die XML oder Code –

+0

I XML hinzugefügt teilen und java :) –

Antwort

1

Im Eltern Ihrer NumberPicker Verwendung

android:descendantFocusability="beforeDescendants" 
android:focusableInTouchMode="true" 
+0

Dies funktioniert, vielen Dank für die schnelle Antwort ! : D –

Verwandte Themen