RemoteViews + TextView + setGravity

android textview
RemoteViews + TextView + setGravity

TextViewを含むアプリウィジェットがあります。

私は呼び出してテキストの配置を変更しようとしています

views.setInt(R.id.widgetText, "setGravity", Gravity.CENTER);

RemoteViewから。 ただし、「問題読み込みウィジェット」になります。その他のsetInt(…​)は正常に動作します。

別のTextViewまたはレイアウトを作成したくない。 重力を変更する他の方法はありますか?

  3  1


ベストアンサー

私の解決策は次のとおりです。

// Text Align
int gravity = widget_pf.getInt(Constants.Prefs.WIDGET_TEXT_ALIGN, 2);
if (gravity == 0)
    remoteViews.setInt(R.id.BalancesLinLayout, "setGravity", Gravity.LEFT);
else if (gravity == 1)
    remoteViews.setInt(R.id.BalancesLinLayout, "setGravity", Gravity.CENTER_HORIZONTAL);
else
    remoteViews.setInt(R.id.BalancesLinLayout, "setGravity", Gravity.RIGHT);

そしてwidget_layout.xmlで:

これまでのところ、これは非常に簡単でした。

1


そう…​ これが私の解決策です。 ウィジェットのレイアウト:

そしてonUpdate(…​)メソッド:

widgetViews = new Hashtable();

widgetViews.put(GRAVITY_TOP_LEFT, R.id.top_left_text);
widgetViews.put(GRAVITY_TOP, R.id.top_text);
widgetViews.put(GRAVITY_TOP_RIGHT, R.id.top_right_text);

widgetViews.put(GRAVITY_LEFT, R.id.left_text);
widgetViews.put(GRAVITY_CENTER, R.id.center_text);
widgetViews.put(GRAVITY_RIGHT, R.id.right_text);

widgetViews.put(GRAVITY_BOTTOM_LEFT, R.id.bottom_left_text);
widgetViews.put(GRAVITY_BOTTOM, R.id.bottom_text);
widgetViews.put(GRAVITY_BOTTOM_RIGHT, R.id.bottom_right_text);

Intent intent = new Intent(context, MinimalisticNotesWidgetActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);

RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
for(int id : widgetViews.values())
{
    views.setViewVisibility(id, View.INVISIBLE);
}

int id = widgetViews.get(textGravity);

views.setOnClickPendingIntent(id, pendingIntent);
views.setTextViewText(id, widgetText);
views.setFloat(id, "setTextSize", fontSize);
views.setInt(id, "setTextColor", textColor);
views.setViewVisibility(id, View.VISIBLE);

P.S. 私は知っています、これは悪いコーディングスタイルですが、インターネットの他の変種は同じように見えます=(

0


タイトルとURLをコピーしました