【问题标题】:How to move spinner in LinearLayout to right?如何将 LinearLayout 中的微调器向右移动?
【发布时间】:2017-05-14 15:11:10
【问题描述】:

我有这样的代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_marginLeft="20dp"
android:layout_marginTop="20dp"
android:layout_marginRight="20dp"
>

<LinearLayout
    android:id="@+id/relativeLayoutforPRICE"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/textView$_points_to_win"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Points to win"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <Spinner
        android:id="@+id/spinner$_points_to_win"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />

</LinearLayout>

目前看起来是这样的:

我想将 Spinner 移动到 LinearLayout 的右侧。我尝试使用:

android:gravity="right"

android:gravity="end"

android:layout_gravity="right"

android:layout_gravity="end"

但这没有帮助。是否有任何其他选项可以将其向右移动? 同样重要的是,我希望将父布局保持为线性(垂直方向),将当前布局保持为线性(水平方向)。

【问题讨论】:

  • 你可以在你的TextView中使用layout_weight="1"
  • 如果您将 android:layout_gravity="right" 设置为 Spinner,请改用 FrameLayout
  • @ChiragSavsani,你说的很有趣!不过,我想知道是否有任何方法可以让这个微调器尽可能小,并且只将它移动到右侧。
  • @withparadox2,就像我说的,我想保持它为 LinearLayout。
  • @Tomas 你能试试我在答案中提到的代码吗?

标签: android layout spinner


【解决方案1】:

我建议对这个逻辑使用RelativeLayout

<RelativeLayout
    android:id="@+id/relativeLayoutforPRICE"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TextView
        android:id="@+id/textView$_points_to_win"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Points to win"
        android:layout_alignParentLeft="true"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <Spinner
        android:id="@+id/spinner$_points_to_win"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"/>

</RelativeLayout>

通过父对齐属性(即 layout_alignParentLeft、layout_alignParentRight),您可以将组件放置到首选位置

【讨论】:

    【解决方案2】:

    嘿,检查一下这段代码。

      <LinearLayout
        android:id="@+id/relativeLayoutforPRICE"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:weightSum="2">
    
        <TextView
            android:id="@+id/textView$_points_to_win"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Points to win"
            android:textAppearance="?android:attr/textAppearanceLarge" />
    
        <Spinner
            android:id="@+id/spinner$_points_to_win"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1" />
    
    </LinearLayout>
    

    希望得到帮助。祝你编码愉快。

    【讨论】:

      【解决方案3】:

      请使用相对布局而不是线性布局

      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:orientation="vertical"
      android:layout_marginLeft="20dp"
      android:layout_marginTop="20dp"
      android:layout_marginRight="20dp"
      >
      
      <RelativeLayout
          android:id="@+id/relativeLayoutforPRICE"
          android:layout_width="match_parent"
          android:layout_gravity="right"
          android:layout_height="wrap_content"
          android:orientation="horizontal">
      
          <TextView
              android:id="@+id/textView$_points_to_win"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="Points to win"
              android:textAppearance="?android:attr/textAppearanceLarge" />
      
          <Spinner
              android:id="@+id/spinner$_points_to_win"
              android:layout_alignParentRight="true"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              />
      
      </RelativeLayout>
      </LinearLayout>
      

      【讨论】:

        【解决方案4】:

        设置 Spinner 的 layout_width 并将 layout_weight 设置为 TextView。

        <LinearLayout
            android:id="@+id/relativeLayoutforPRICE"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
        
            <TextView
                android:id="@+id/textView$_points_to_win"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Points to win"
                android:textAppearance="?android:attr/textAppearanceLarge" />
        
            <Spinner
                android:id="@+id/spinner$_points_to_win"
                android:layout_width="50dp"
                android:layout_height="wrap_content"/>
        
        </LinearLayout>
        

        【讨论】:

          【解决方案5】:

          试试这个你的代码我已经更新了一点。

            <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical"
              android:layout_marginLeft="20dp"
              android:layout_marginTop="20dp"
              android:layout_marginRight="20dp"
              >
          
              <LinearLayout
                  android:id="@+id/relativeLayoutforPRICE"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:layout_gravity="right"
                  android:orientation="horizontal">
          
                  <TextView
                      android:id="@+id/textView$_points_to_win"
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      android:text="Points to win"
                      android:textAppearance="?android:attr/textAppearanceLarge" />
          
                  <Spinner
                      android:id="@+id/spinner$_points_to_win"
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      />
          
              </LinearLayout>
          

          这是效果很好的屏幕截图

          http://screencast.com/t/kD5y6PlVi

          【讨论】:

            【解决方案6】:

            只需更改代码中的以下更改即可。

            TextView

            layout_width="0dp" 
            layout_weight="1"
            

            查看代码。

            <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:layout_marginLeft="20dp"
            android:layout_marginTop="20dp"
            android:layout_marginRight="20dp">
            
            <LinearLayout
                android:id="@+id/relativeLayoutforPRICE"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
            
                <TextView
                    android:id="@+id/textView$_points_to_win"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    layout_weight="1"
                    android:text="Points to win"
                    android:textAppearance="?android:attr/textAppearanceLarge" />
            
                <Spinner
                    android:id="@+id/spinner$_points_to_win"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"/>
            
            </LinearLayout>
            

            【讨论】:

              【解决方案7】:

              将您的 LinearLayout 更改为以下内容:

              <LinearLayout
                      android:id="@+id/relativeLayoutforPRICE"
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      android:orientation="horizontal"
                      android:layout_alignParentTop="true"
                      android:layout_alignParentRight="true"
                      android:layout_alignParentEnd="true">
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2019-08-26
                • 2020-07-10
                • 1970-01-01
                • 1970-01-01
                • 2014-05-03
                • 2015-07-02
                • 1970-01-01
                相关资源
                最近更新 更多