【问题标题】:Set textview width 70% of screen size in linear layout在线性布局中将 textview 宽度设置为屏幕大小的 70%
【发布时间】:2023-03-07 18:29:02
【问题描述】:

我有一个简单的线性布局,里面有 2 个按钮。
我设置了 layout_width="fill_parent"

但我希望按钮同时占据屏幕大小的 70% 我希望他们居中。
我如何做到这一点。?

这就是现在的样子。

我想要这样的东西。

谢谢。

编辑: 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="vertical" >

<Button
    android:id="@+id/button1"
    android:layout_width="fill_parent"        
    android:layout_height="wrap_content"
    android:text="Button" />

<Button
    android:id="@+id/button2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Button" />

</LinearLayout>

【问题讨论】:

  • 使用LayoutWaight来设置

标签: android android-layout button width android-linearlayout


【解决方案1】:

android:weightSum="1" 分配给父布局,将android:layout_weight="0.7" 分配给Buttons,如下所示:

 <LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:orientation="horizontal"
    android:weightSum="1" >
    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.7"
        android:text="BUTTON 1" />
</LinearLayout>
 <LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:orientation="horizontal"
    android:weightSum="1" >
    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.7"
        android:text="BUTTON 1" />
</LinearLayout>

或者您可以像这样为根布局分配Margins

android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"

但这不会完全是屏幕的70%。 让我知道它是否适合你。

【讨论】:

    【解决方案2】:

    试试这个:

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >
    
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:orientation="horizontal"
            android:weightSum="1" >
    
            <Button
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="0.7"
                android:text="button 1" />
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:orientation="horizontal"
            android:weightSum="1" >
    
            <Button
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="0.7"
                android:text="button 1" />
        </LinearLayout>
    </LinearLayout>
    

    【讨论】:

    • 此代码有效,但您更改了 orientation 属性。不这样做有可能吗..??
    • 不,在垂直方向的情况下它不起作用。如果你想要像上面显示的图像那样布局,那么你必须使用嵌套布局
    【解决方案3】:

    试试这个:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerHorizontal="true"
        android:gravity="center_horizontal"
        android:orientation="horizontal"
        android:weightSum="100" >
    
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="70"
            android:orientation="vertical" >
    
            <Button
                android:id="@+id/button1"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="Button" />
    
            <Button
                android:id="@+id/button2"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="Button" />
        </LinearLayout>
    
    </LinearLayout>
    

    这个布局文件给你你想要的。

    【讨论】:

      【解决方案4】:

      试试下面的代码:

      <?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="vertical" >
      
          <LinearLayout
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:gravity="center_horizontal"
              android:orientation="horizontal"
              android:weightSum="1" >
      
              <Button
                  android:layout_width="0dp"
                  android:layout_height="wrap_content"
                  android:layout_weight="0.7"
                  android:text="button 1" />
          </LinearLayout>
      
          <LinearLayout
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:gravity="center_horizontal"
              android:orientation="horizontal"
              android:weightSum="1" >
      
              <Button
                  android:layout_width="0dp"
                  android:layout_height="wrap_content"
                  android:layout_weight="0.7"
                  android:text="button 2" />
          </LinearLayout>
      
      </LinearLayout>
      

      希望对你有帮助!!!

      【讨论】:

        【解决方案5】:
        • 首先通过如下方式获取屏幕尺寸,动态设置按钮宽度为0.7*screenWidth
         DisplayMetrics displaymetrics = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
            int height = displaymetrics.heightPixels;
            int width = displaymetrics.widthPixels;
        

        【讨论】:

        • 有没有可能在 XML 中做......??
        • 按照其他人的建议尝试 android:layout_weight="0.7"
        • 但我认为,要使用 android:layout_weight,我们需要将 android:orientation 更改为 horizo​​ntal。是否可以保持方向垂直并仍然实现它。
        • 是的,AFAIK 你仍然可以实现它
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多