繁体   English   中英

Textview基于屏幕宽度的百分比居中对齐

[英]Textview center-aligned based on percentage of screenwidth

我以为这将是一个常见的问题,但是我找不到任何答案……

是否可以基于屏幕宽度的百分比将(可变长度)textview居中对齐?

在我的情况下,我有2个textview,我想要实现以下功能:

文本对齐

另一个例子:

textview对齐2

第一个textview是屏幕宽度的30%中心高度,即width = wrap_content,而第二个textview则占据了其余的空间。 第一个textview的大小不应固定(请参见上图)

我不想以编程方式执行此操作,因为这在我的程序中会很昂贵。 如果可能的话,最好放在xml布局文件中:)

现在,我只能使用LinearLayout的layout_weight(通过在左侧放置30%的虚拟对象)来实现“左对齐”文本视图,但是我想要居中对齐。

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >
    <View
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_weight="3" >
    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="7"
        android:orientation="horizontal" >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="textview" />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:singleLine="true"
            android:text="another textview"
            android:textColor="#FFFF0000"/>
    </LinearLayout>
</LinearLayout>

通过将近一个小时的时间测试此“ ...”布局,我成功完成了以下工作:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:weightSum="100" >

    <RelativeLayout
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="40"
        android:background="@android:color/transparent">

        <RelativeLayout
            android:id="@+id/left_layout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_margin="0dp"
            android:gravity="center"
            android:padding="0dp"
            android:singleLine="true"
            android:text="first textview"
            android:textColor="#FFFF0000" >

            <View
                android:layout_width="1dp"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:background="#0000FF" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:background="#00FF00"
                android:gravity="center"
                android:text="textview"
                android:textColor="#FFF" />
        </RelativeLayout>

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_toLeftOf="@id/left_layout"
            android:background="#0000FF"
            android:gravity="center"
            android:text="textview"
            android:textColor="#FFF" />
    </RelativeLayout>

    <TextView
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="60"
        android:background="#FFFF0000"
        android:gravity="right"
        android:singleLine="true"
        android:text="another textview"
        android:textColor="#FFF" />

</LinearLayout>

输出 在此处输入图片说明

最后,在Java中,根据绿色的textview宽度或内容长度,可以以编程方式更改其他textview的layout_weight。

这应该对你有帮助

祝你今天愉快。

// try this way hope this will help you...
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <View
            android:layout_width="0dp"
            android:layout_height="1dp"
            android:layout_weight="0.15"/>

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.85">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="left"
                android:text="first Textview"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="second textview demo text "/>
        </LinearLayout>
    </LinearLayout>

</LinearLayout>    

试试这个

<LinearLayout
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="3"
    android:gravity="center_horizontal"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />
</LinearLayout>

<LinearLayout
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="7"
    android:gravity="center_horizontal"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>

工作完美,由我检查。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM