Android如何将视图的宽度设置为一定比例的屏幕宽度?

时间:2014-09-02 08:41:48

标签: android xml layout

我在TextViews中水平放置3 LinearLayout。现在,我希望它们平均占据屏幕宽度的1/3。换句话说,任何TextView的宽度由屏幕宽度决定,比率始终为1/3。

我想知道是否有办法只修改xml文件来实现这个目标?

main.xml中:

<?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:orientation="horizontal" >

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

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView2" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView3" />

</LinearLayout>

6 个答案:

答案 0 :(得分:1)

试试这个:

<?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:orientation="horizontal" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="0px"
        android:layout_height="wrap_content"
        android:text="TextView1"
        android:layout_weight="1" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="0px"
        android:layout_height="wrap_content"
        android:text="TextView2"
        android:layout_weight="1" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="0px"
        android:layout_height="wrap_content"
        android:text="TextView3"
        android:layout_weight="1" />

</LinearLayout>

答案 1 :(得分:1)

试试这个:

<?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:orientation="horizontal"
    android:weightSum="3" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="TextView1" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="TextView2" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="TextView3" />

</LinearLayout>

答案 2 :(得分:0)

你应该以编程方式完成:

TypedValue tv = new TypedValue();
TypedValue.complexToDimensionPixelSize(tv.data,activity.getResources().getDisplayMetrics());

或者说:

DisplayMetrics displayMetrics = activity.getResources().getDisplayMetrics();
int px = Math.round(dp * (displayMetrics.densityDpi / DisplayMetrics.DENSITY_DEFAULT));

答案 3 :(得分:0)

将权重android:layout_weight="?"应用于xml文件中的每个视图。

答案 4 :(得分:0)

在textview上添加额外的线性布局。将线性布局的宽度设置为android:layout_width = "0px",将文本设置为android:layout_width="full_parent"

不要忘记在父线性布局上设置孩子的weigthsum和layout_weigth

答案 5 :(得分:0)

您只需在每个文本视图上添加一个代码行

<强>机器人:layout_weight =&#34; 0.3&#34;

<?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:orientation="horizontal" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TextView1"
    android:gravity="center_horizontal"
    android:layout_weight="0.3"/>

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TextView2"
    android:gravity="center_horizontal"
    android:layout_weight="0.3"/>

<TextView
    android:id="@+id/textView3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TextView3"
    android:gravity="center_horizontal"
    android:layout_weight="0.3"/>

</LinearLayout>

enter image description here