Android 远程视图+;文本视图+;地心引力
我有一个带有文本视图的应用程序小部件Android 远程视图+;文本视图+;地心引力,android,textview,Android,Textview,我有一个带有文本视图的应用程序小部件 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/widgetText"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="@string/defaultWidgetText"
android:gravity="center"
/>
</FrameLayout>
从远程视图。但这会导致“加载小部件时出现问题”
其他setInt(…)工作正常
我不想再创建一个文本视图或布局。有没有其他方法可以改变重力呢?所以。。。这是我的解决办法。
小部件布局:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/top_left_text"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:visibility="invisible"
android:gravity="top|left"
/>
<TextView
android:id="@+id/top_text"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:visibility="invisible"
android:gravity="top|center_horizontal"
/>
<TextView
android:id="@+id/top_right_text"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:visibility="invisible"
android:gravity="top|right"
/>
<TextView
android:id="@+id/left_text"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:visibility="invisible"
android:gravity="left|center_vertical"
/>
<TextView
android:id="@+id/center_text"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:visibility="visible"
android:gravity="center"
/>
<TextView
android:id="@+id/right_text"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:visibility="invisible"
android:gravity="right|center_vertical"
/>
<TextView
android:id="@+id/bottom_left_text"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:visibility="invisible"
android:gravity="bottom|left"
/>
<TextView
android:id="@+id/bottom_text"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:visibility="invisible"
android:gravity="bottom|center_horizontal"
/>
<TextView
android:id="@+id/bottom_right_text"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:visibility="invisible"
android:gravity="bottom|right"
/>
</FrameLayout>
和更新(…)方法:
widgetViews=newhashtable();
widgetViews.put(重力左上角,R.id.TOP左上角文本);
widgetViews.put(重力图顶部,R.id.顶部,文本);
widgetViews.put(重力右上方,R.id.TOP右上方);
widgetViews.put(重力左,R.id.LEFT_文本);
widgetViews.put(重心,R.id.CENTER\U文本);
widgetViews.put(重力向右,R.id.RIGHT\u文本);
widgetViews.put(重力\底部\左侧,R.id.底部\左侧\文本);
widgetViews.put(重力底部,R.id.BOTTOM\u文本);
widgetViews.put(重力\底部\右侧,R.id.底部\右侧\文本);
意向意向=新意向(上下文,MinimalisticNotesWidgetActivity.class);
PendingEvent PendingEvent=PendingEvent.getActivity(上下文,0,意图,0);
RemoteView视图=新的RemoteView(context.getPackageName(),R.layout.widget_layout);
for(int-id:widgetViews.values())
{
views.setViewVisibility(id,View.INVISIBLE);
}
int id=widgetViews.get(textGravity);
views.setOnClickPendingEvent(id,PendingEvent);
views.setTextViewText(id,widgetText);
setFloat(id,“setTextSize”,fontSize);
views.setInt(id,“setTextColor”,textColor);
views.setViewVisibility(id,View.VISIBLE);
另外,我知道,这是一种糟糕的编码风格,但互联网上的其他变体看起来都是一样的=(我的解决方案是:
// 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中:
<LinearLayout
android:id="@+id/BalancesLinLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical" >
<TextView
android:id="@+id/SampleText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:singleLine="true"
android:textColor="#FFFFFF"
android:textSize="9sp" />
</LinearLayout>
到目前为止,这是非常简单的
// 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);
<LinearLayout
android:id="@+id/BalancesLinLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical" >
<TextView
android:id="@+id/SampleText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:singleLine="true"
android:textColor="#FFFFFF"
android:textSize="9sp" />
</LinearLayout>