如何在android中缩放TextView并将其保持在中心位置

时间:2012-12-05 18:12:54

标签: android android-layout

我正在尝试使用动态缩放测试视图来进行布局。布局看起来像the following - 请参见左下角。

现在该部分是复合控件。圆形缩放很好,但我无法弄清楚如何在正确缩放时使文本完美地定位在中间。我希望文本可以说容器大小的50%并且完美地定位在中心。 RelativeLayout只允许使用绝对值,而且我似乎无法使用文本视图进行线性布局的文本视图加权。

复合控制:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/VarioCircle"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerInParent="true"
        android:contentDescription="Vario Circle"

        android:scaleType="fitCenter"
        android:src="@drawable/circle" />

    <LinearLayout
        android:gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:weightSum="1.0"
        android:orientation="vertical"
                        android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"

        >

        <TextView
            android:id="@+id/VarioText"
            android:layout_width="wrap_content"
            android:layout_height="0dp"

            android:text="200"
            android:textColor="#FF0000"
            android:textSize="60dp"
            android:layout_weight="0.7"
            android:textStyle="bold"
            android:typeface="monospace" />

    </LinearLayout>
</RelativeLayout>

总体布局:

 <com.proflite.VarioView
     android:id="@+id/Vario"
         android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_alignParentBottom="true"
 />

3 个答案:

答案 0 :(得分:0)

将TextView放在容器中。并将Gravity(Views属性)设置为Center。 将TextViews的宽度和高度设置为wrap_content。 这将使TextView在其容器中居中。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="200dp"
    android:layout_height="200dp" >
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Medium Text"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textSize="20sp" />
</FrameLayout>

这将使TextView在FrameLayout

中居中

答案 1 :(得分:0)

试试这个

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >

<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content" >

<ImageView
    android:id="@+id/VarioCircle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:contentDescription="Vario Circle"
    android:scaleType="fitCenter"
    android:src="@drawable/circle" />

    <TextView
        android:id="@+id/VarioText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="200"
        android:textColor="#FF0000"
        android:textSize="60dp"
        android:layout_weight="0.7"
        android:textStyle="bold"
        android:typeface="monospace" />
    </RelativeLayout>

    </RelativeLayout>

答案 2 :(得分:0)

我建议您制作一个Button小部件并将图像设置为背景,其格式为.png,具有透明背景。

像这样: enter image description here

之后确保将其另存为.png

1)然后转到xml布局创建一个Button或ImageButton小部件 2)将此图片设置为背景图像(android:background="@drawable/yourcircle") 3)然后最后你可以在里面放置任何文字(android:text="blabla")+你可以使用Button.setText("blablabla")确保从代码中更改它 4)例如,您还需要使用Button.setTextSize(49)更改字体大小 5)最后将它放在中心,android:gravity="center"