如何改变背景颜色的按键或主题动态自定义键盘的Andr​​oid自定义、按键、键盘、颜色

2023-09-06 16:16:23 作者:请叫我隐小姐

我工作的自定义键盘应用程序,我需要设置或更改背景主题或键盘。他们Setting.xml的看法颜色在我的应用程序,在这里用户可以选择不同的背景主题,不同的颜色键的行。 在首次推出的应用在工作时的自定义键盘显示的是主题没有变正常,但下一次。

i am working on Custom keyboard app i need to set or change background theme or color of keyboard .their setting.xml view in my app where user can select different background theme and different color for key rows. during first time launch of application it is working fine but next time when custom keyboard is displaying theme is not changed.

我现在用的这个code: -

I am Am Using this code:-

public class SoftKeyboard extends InputMethodService 
    implements KeyboardView.OnKeyboardActionListener {
static final boolean DEBUG = false;

/**
 * This boolean indicates the optional example code for performing
 * processing of hard keys in addition to regular text generation
 * from on-screen interaction.  It would be used for input methods that
 * perform language translations (such as converting text entered on 
 * a QWERTY keyboard to Chinese), but may not be used for input methods
 * that are primarily intended to be used for on-screen text entry.
 */
static final boolean PROCESS_HARD_KEYS = true;

private static final int SELECT_PICTURE = 101;

private KeyboardView mInputView;
private CandidateView mCandidateView;
private CompletionInfo[] mCompletions;
private Context context = SoftKeyboard.this;
private StringBuilder mComposing = new StringBuilder();
private boolean mPredictionOn;
private boolean mCompletionOn;
private int mLastDisplayWidth;
private boolean mCapsLock;
private long mLastShiftTime;
private long mMetaState;

private LatinKeyboard mSymbolsKeyboard;
private LatinKeyboard mSymbolsShiftedKeyboard;
private LatinKeyboard mQwertyKeyboard;
private LatinKeyboard mSmilyKeyboard;
private LatinKeyboard mSmilyKeyboard1;

private LatinKeyboard mCurKeyboard;

private String mWordSeparators;

/**
 * Main initialization of the input method component.  Be sure to call
 * to super class.
 */

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

    mWordSeparators = getResources().getString(R.string.word_separators);      
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
    String name = preferences.getString("Name","");


    Log.e("SoftKeyboard - ",""+name+"OnCreate Method Called--");



    if(!name.equalsIgnoreCase(""))
    {
      name = name+"  Sethi";  /* Edit the value here*/
    }
}

这是我的设置类我在哪里设置或选择颜色或主题: -

And This is my Setting Class where i am setting or selecting color or theme:--

public class Setting extends Activity implements OnClickListener {

LinearLayout roar, edge, burst, impact, blue_theme, orange_theme,
        green_theme, black_brigthness, white_brightness;

Bundle bundle;

public static boolean isblackBrightness = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.setting);

    // ----------UI intilisation---------------------
    uiInitilisation();

}

public void uiInitilisation() {

    roar = (LinearLayout) findViewById(R.id.ror_LL);
    edge = (LinearLayout) findViewById(R.id.edge_LL);
    burst = (LinearLayout) findViewById(R.id.burst_LL);
    impact = (LinearLayout) findViewById(R.id.impact_LL);

    // -------------Themes------------------------------
    blue_theme = (LinearLayout) findViewById(R.id.blue_theme_LL);
    orange_theme = (LinearLayout) findViewById(R.id.orange_theme_LL);
    green_theme = (LinearLayout) findViewById(R.id.green_theme_LL);

    // ------------Brightness----------------------------
    black_brigthness = (LinearLayout) findViewById(R.id.black_brigthness_LL);
    white_brightness = (LinearLayout) findViewById(R.id.white_brigthness_LL);

    // --------------On Click Events-------------------

    roar.setOnClickListener(this);
    edge.setOnClickListener(this);
    burst.setOnClickListener(this);
    impact.setOnClickListener(this);

    // -----------Theme-------------------------------------
    blue_theme.setOnClickListener(this);
    orange_theme.setOnClickListener(this);
    green_theme.setOnClickListener(this);

    // ------------------Brightness--------------------------
    black_brigthness.setOnClickListener(this);
    white_brightness.setOnClickListener(this);

}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {
    case R.id.ror_LL:

        startActivity(new Intent(Setting.this, MainActivity.class));

        break;

    case R.id.edge_LL:

        startActivity(new Intent(Setting.this, MainActivity.class));




        break;
    case R.id.burst_LL:

        startActivity(new Intent(Setting.this, MainActivity.class));

        break;

    case R.id.impact_LL:

        startActivity(new Intent(Setting.this, MainActivity.class));

        break;  

    case R.id.blue_theme_LL:

        Intent i = new Intent(Setting.this,
                MainActivity.class);
            i.putExtra("color", "blue");

        startActivity(i);


        break;

    case R.id.orange_theme_LL:
        Intent i2 = new Intent(Setting.this,
                MainActivity.class);
            i2.putExtra("color", "orange");

        startActivity(i2);

        break;

    case R.id.green_theme_LL:
        Intent i3 = new Intent(Setting.this,
                MainActivity.class);
            i3.putExtra("color", "green");

        startActivity(i3);

        break;
    case R.id.black_brigthness_LL:

        Intent black_britness = new Intent(Setting.this,
                MainActivity.class);
        black_britness.putExtra("bright", "black");
        startActivity(black_britness);

          SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
          SharedPreferences.Editor editor = preferences.edit();
          editor.putString("Name","Harneet");
          editor.commit();


        isblackBrightness = true ; 
        Log.e("Black--","Black=="+isblackBrightness);

        break;
    case R.id.white_brigthness_LL:
        Intent white_britness = new Intent(Setting.this,
                MainActivity.class);
        white_britness.putExtra("bright", "white");
        startActivity(white_britness);
        isblackBrightness = false;
        Log.e("white--","White=="+isblackBrightness);

        SharedPreferences preferences1 = PreferenceManager.getDefaultSharedPreferences(this);
          SharedPreferences.Editor editor1 = preferences1.edit();
          editor1.putString("Name","Arun");
          editor1.commit();


        break;

     }
}

}

我没有得到如何做到这一点,我是否需要设置widget.i迫切需要,请帮助我。

i am not getting how to do this whether i have to set widget.i need Urgently please help me

推荐答案

获取解决方案,以改变自定义键盘的布局。

Get solution to change the layout of custom keyboard.

当键盘首次加载onCreateInputView()被调用。之后,当键盘打开onStartInputView(EditorInfo属性,布尔重新启动)被称为每次。

所以,现在键盘布局(主题)要定义在 onCreateInputView()专利

So, now layout of keyboard(Theme) have to define in onCreateInputView() Like This

public KeyboardView mInputView;
public View onCreateInputView() {

    SharedPreferences pre = getSharedPreferences("test", 1);
    int theme = pre.getInt("theme", 1);

    if(theme == 1)
    {
        this.mInputView = (KeyboardView) this.getLayoutInflater().inflate(R.layout.input, null);
    }else
    {
        this.mInputView = (KeyboardView) this.getLayoutInflater().inflate(R.layout.input_2, null);

    }
    this.mInputView.setOnKeyboardActionListener(this);
    this.mInputView.setKeyboard(this.mQwertyKeyboard);
    return this.mInputView;
}

在onStartInputView做到这一点

and do this in onStartInputView

public void onStartInputView(EditorInfo attribute, boolean restarting) {
    super.onStartInputView(attribute, restarting);

    setInputView(onCreateInputView());
}