Как динамически изменить цвет фона или тему клавиш в Custom Keyboard AndroidAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как динамически изменить цвет фона или тему клавиш в Custom Keyboard Android

Сообщение Anonymous »

Я работаю над приложением «Пользовательская клавиатура». Мне нужно установить или изменить тему фона или цвет клавиатуры. Их представление settings.xml в моем приложении, где пользователь может выбрать другую тему фона и другой цвет для строк клавиш.
Во время при первом запуске приложения оно работает нормально, но в следующий раз, когда пользовательская клавиатура отображает тему, она не изменится.

Я использую этот код:

Код: Выделить всё

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*/
}
}
И это мой класс настроек, где я устанавливаю или выбираю цвет или тему:

Код: Выделить всё

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;

}
}
}
Я не понимаю, как это сделать, нужно ли мне устанавливать виджет.

Подробнее здесь: https://stackoverflow.com/questions/181 ... keyboard-a
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»