Тема выбора номера для Android (кнопки плюс минус)

Я хотел бы изменить тему NumberPicker вместо темы с тремя значениями (например, значение 10):

9 10 11

Я хотел бы иметь кнопку «плюс» и «минус» и цифру 10 посередине.

Я прочитал это: http://developer.android.com/reference/android/widget/NumberPicker.html Мне нужно изменить только тему, чтобы получить то, что я хочу. Но как? Я не могу установить тему в своем фрагменте:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"   
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:background="@drawable/gradient_details_bg"
    >

Мой фрагмент:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/gradient_details_bg" >

    <Button
        android:id="@+id/buttonGoRandomBlock"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:background="@drawable/menu_item_selector"
        android:gravity="center"
        android:text="@string/goButtonText"
        android:textColor="@color/menuItemTextColor"
        android:width="@dimen/menuItemTextSize" />

    <com.testco.selection.NumberPickerCustom
        android:id="@+id/numberPickerCustom"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        max="100"
        min="1"
        value="30" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/numberPickerCustom"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="20dp"
        android:gravity="center"
        android:text="@string/randomSelectorText"
        android:textColor="@color/menuItemTextColor"
        android:textSize="@dimen/menuDetailsTextSize" />

</RelativeLayout>

Мой класс фрагмента:

package com.testco.selection.subfragments;


import android.app.Dialog;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.testco.easytest.R;

public class SubMenuFragment extends Fragment {
    final static String ARG_POSITION = "position";
    int mCurrentPosition = -1;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
        Bundle savedInstanceState) 
    {

        // If activity recreated (such as from screen rotate), restore
        // the previous article selection set by onSaveInstanceState().
        // This is primarily necessary when in the two-pane layout.
        if (savedInstanceState != null) {
            mCurrentPosition = savedInstanceState.getInt(ARG_POSITION);
        }

        // Inflate the layout for this fragment
        View rootView = inflater.inflate(R.layout.fragment_random_block, container, false);
        return rootView;
    }

    @Override
    public void onStart() {
        super.onStart();

        // During startup, check if there are arguments passed to the fragment.
        // onStart is a good place to do this because the layout has already been
        // applied to the fragment at this point so we can safely call the method
        // below that sets the article text.
        Bundle args = getArguments();
        if (args != null) {
            // Set article based on argument passed in
            updateArticleView(args.getInt(ARG_POSITION));
        } else if (mCurrentPosition != -1) {
            // Set article based on saved instance state defined during onCreateView
            updateArticleView(mCurrentPosition);
        }
    }

    public void updateArticleView(int position) {
//        TextView article = (TextView) getActivity().findViewById(R.id.article);
//        article.setText(Ipsum.Articles[position]);
//        mCurrentPosition = position;
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);

        // Save the current article selection in case we need to recreate the fragment
        outState.putInt(ARG_POSITION, mCurrentPosition);
    }
}

person Accollativo    schedule 01.09.2013    source источник
comment
stackoverflow.com/questions/17993192/. Установить стиль frag.setStyle(DialogFragment.STYLE_NORMAL,R.style.cust_dialog)   -  person Raghunandan    schedule 01.09.2013
comment
в onCreateView фрагмента this.setStyle(DialogFragment.STYLE_NORMAL, R.style.cust_dialog); не работай. Я пробовал это: final Dialog d=new Dialog(getActivity(), R.style.cust_dialog); d.setContentView(getView()); И через xml: android:theme = @style/cust_dialog Но ничего не получилось   -  person Accollativo    schedule 01.09.2013
comment
покажи свой фрагмент. вы хотите диалоговое окно справа или диалоговое окно по нажатию кнопки с помощью средства выбора номера ??   -  person Raghunandan    schedule 01.09.2013
comment
извините, но это не полезно.   -  person Raghunandan    schedule 01.09.2013
comment
DialogFragment picker = MyDialogFragment.newInstance(); picker.setStyle( DialogFragment.STYLE_NORMAL, R.style.cust_dialog ); picker.show(getFragmentManager(), "MyDialogFragment");. установить стиль для фрагмента, как это   -  person Raghunandan    schedule 01.09.2013
comment
Я сделал слишком много копий и вставок :D Мне не нужен фрагмент диалога, достаточно простого фрагмента. Я отредактировал код и разместил его   -  person Accollativo    schedule 01.09.2013
comment
попробуйте решение Дэвида @ stackoverflow.com/questions/9469174 /установить тему для фрагмента   -  person Raghunandan    schedule 01.09.2013
comment
Преобразованные комментарии в ответ. Пожалуйста, опубликуйте соответствующие детали в следующий раз, когда вы зададите вопрос, будет проще опубликовать ответ раньше и проверить опубликованный ответ.   -  person Raghunandan    schedule 01.09.2013


Ответы (1)


Из документов

Если текущая тема является производной от Theme, виджет представляет текущее значение в виде редактируемого поля ввода с кнопкой увеличения вверху и кнопкой уменьшения внизу. Длительное нажатие на кнопки позволяет быстро изменить текущее значение. Нажатие на поле ввода позволяет ввести желаемое значение.

Итак, вам нужно установить тему. Определить стили в файле styles.xml

<style name="cust_dialog" parent="@android:style/Theme.NoTitleBar.Fullscreen" />

Чтобы установить тему, следуйте ответу Дэвида @

Установить тему для фрагмента

person Raghunandan    schedule 01.09.2013