Android小部件在运行时更改边距

时间:2012-02-06 20:53:08

标签: android android-layout

我创建了一个带有图标的Android小部件,该图标在右上角的一个小白圈中显示了一个数字。现在,如果我的值是一个字符,则该值恰好位于小白色圆圈的中间。但是当值为2个字符时,它就不再在中间了。

尝试做的是,如果我的值超过1个字符,那么我想更改textview的左边距,以便值位于图标一部分的白色圆圈的中心。

我已经准备好了

RemoteViews updateViews = new RemoteViews(context.getPackageName(), R.layout.widget);
updateViews.setInt(R.id.Value, "setMargins", 10);

但这给了一个例外。 有没有办法在运行时更改窗口小部件中的左边距?

我的布局文件如下:

<ImageView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:src="@drawable/widget_alarm" 
        android:id="@+id/imageAlarm"
        android:layout_marginLeft="10dp" 
        android:layout_centerVertical="true"
    />

    <TextView  
        android:id="@+id/alarmCount"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:layout_marginTop="22dip"
        android:layout_marginLeft="58dip"
        android:text="0"
        android:textColor="#000000"
    />

2 个答案:

答案 0 :(得分:0)

在xml中添加到textview

android:gravity="center_vertical|center_horizontal"

您的文字将始终位于中心位置。

答案 1 :(得分:0)

我找到了解决方案:)这确实是一个在文本框中添加grafity:center的问题。

我将布局更改为以下内容:

<ImageView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:src="@drawable/widget_alarm" 
        android:id="@+id/imageAlarm"
        android:layout_marginLeft="10dp" 
        android:layout_centerVertical="true"
    />

    <TextView  
        android:id="@+id/alarmCount"
        android:layout_width="25dp" 
        android:layout_height="wrap_content"
        android:layout_marginTop="22dip"
        android:gravity="center"
        android:textSize="12dip"
        android:text="000"
        android:textColor="#d21925"
        android:layout_alignRight="@+id/imageAlarm"
    />

现在,textview与图标右侧对齐,宽度与小圆圈的大小相同。一个grafity:中心运作良好。