【问题标题】:How to make Image Views centre in a linear layout inside a Horizontal Scroll View?如何使图像视图在水平滚动视图内的线性布局中居中?
【发布时间】:2020-07-27 16:53:58
【问题描述】:

Example Diagram

我以编程方式将 ImageViews 添加到线性布局中,并希望它们在线性布局中居中,但布局本身与左侧对齐。

【问题讨论】:

    标签: android scrollview android-linearlayout centering horizontalscrollview


    【解决方案1】:

    在您的代码中,获取您的 LinearLayout:

    LinearLayout yourLinearLayout = (LinearLayout) findViewById(R.id.yourLinearLayout);
    

    定义一个通用的 LayoutParams 对象:

      LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
      LinearLayout.LayoutParams.WRAP_CONTENT,
      LinearLayout.LayoutParams.WRAP_CONTENT);
    

    然后使用 for 循环将您的 ImageViews 添加到您的 LinearLayout:

    for (int i = 0; i < imagesToAdd.size(); i++) {
     ImageView imgView = new ImageView(this);
     imgView.setImageResource("yourResourceID" + i);
     imgView.setLayoutParams(layoutParams);
     yourLinearLayout.addView(imgView);
    }
    

    【讨论】:

      【解决方案2】:

      创建一个以HorizontalScrollView 作为根视图并以LinearLayout 作为子视图的布局

      要使图像居中,请确保在 LinearLayout 中使用 android:gravity="center"

      <?xml version="1.0" encoding="utf-8"?>
      <HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/rootlayout"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:scrollbars="horizontal">
      
          <LinearLayout
              android:id="@+id/linearlayout"
              android:layout_width="wrap_content"
              android:layout_height="match_parent"
              android:gravity="center"
              android:orientation="horizontal">
      
          </LinearLayout>
      
      </HorizontalScrollView>
      

      要以编程方式添加图像,请为 LinearLayout 充气并使用 addView() 方法

      public class MainActivity extends AppCompatActivity {
      
          @Override
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
      
              LinearLayout linearLayout = findViewById(R.id.linearlayout);
      
              linearLayout.addView(getImage(R.drawable.image1));
              linearLayout.addView(getImage(R.drawable.image2));
              linearLayout.addView(getImage(R.drawable.image3));
      
          }
      
          ImageView getImage(int drawable) {
              ImageView image = new ImageView(this);
              image.setLayoutParams(new 
                      LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, 
                                                ViewGroup.LayoutParams.WRAP_CONTENT));
              image.setImageResource(drawable);
              return image;
          }
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多