【问题标题】:Android - Docking ImageView to the bottom of LinearLayoutAndroid - 将 ImageView 停靠到 LinearLayout 的底部
【发布时间】:2014-11-20 08:25:06
【问题描述】:

我有一个 Android 应用,我正在尝试在代码中创建以下布局:

这是我目前的代码:

public class MyLayout extends LinearLayout {

     private Context mContext;

     public MyLayout(Context context) {
         super(context);
         mContext = context;
         this.build();
     }

     private void build() {
         LinearLayout parent = new LinearLayout(mContext);
         parent.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,
             LayoutParams.FILL_PARENT));

         GridView gridView = new GridView(this.mContext);
         gridView.setNumColumns(2);
         ViewGroup.LayoutParams params = new ViewGroup.MarginLayoutParams(
                 MarginLayoutParams.FILL_PARENT,
                 MarginLayoutParams.WRAP_CONTENT);
         gridView.setLayoutParams(params);
         parent.addView(gridView);

         addView(parent);
     }
}

如何添加 ImageView 使其停靠在 LinearLayout 的底部?

【问题讨论】:

  • 为什么不用XML文件来实现布局?
  • 我正在开发的应用程序在代码中构建此屏幕,但是我愿意使用 xml。我将如何在 XML 中做到这一点?

标签: android android-layout gridview imageview


【解决方案1】:

您可以使用如下所示的 xml 布局,然后在 onCreate 方法中使用 setContentView(R.layout.your_layout_name) 加载它。

<?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"
    android:paddingLeft="5dp"
    android:paddingRight="5dp"
    android:weightSum="10" >

    <GridView 
        android:id="@+id/yourGridViewID"
        android:layout_height="0dp"
        android:layout_width="match_parent"
        android:layout_weight="8" />

    <ImageView 
        android:id="@+id/yourImageViewID"
        android:layout_height="0dp"
        android:layout_width="match_parent"
        android:layout_weight="2"/>

</LinearLayout>

【讨论】:

    【解决方案2】:

    参考这段代码:

    public class MyLayout extends LinearLayout {
    
     private Context mContext;
     private LinearLayout parent;
     public MyLayout(Context context) {
         super(context);
         mContext = context;
     parent = new LinearLayout(mContext);
         this.build();
     }
    
     private void build() {
    
         parent.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,
             LayoutParams.FILL_PARENT));
    
         GridView gridView = new GridView(this.mContext);
         gridView.setNumColumns(2);
         ViewGroup.LayoutParams params = new ViewGroup.MarginLayoutParams(
                 MarginLayoutParams.FILL_PARENT,
                 MarginLayoutParams.WRAP_CONTENT);
    
         gridView.setLayoutParams(params);
         ImageView imageview = new ImageView(this.mContext);
         ViewGroup.LayoutParams params2 = new ViewGroup.MarginLayoutParams(
                 MarginLayoutParams.FILL_PARENT,
                 MarginLayoutParams.WRAP_CONTENT);
         params2.gravity = Gravity.BOTTOM;
         imageview.setLayout(params2);
         parent.addView(gridView);
         parent.addView(imageview);
    
         addView(parent);
     }
    }
    

    【讨论】:

    • params2.gravity -> 无法解析重力,因为它不是 ViewGroup 的一部分。
    猜你喜欢
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    • 2013-11-14
    • 2017-09-13
    • 2016-08-15
    • 1970-01-01
    • 2013-10-25
    • 1970-01-01
    相关资源
    最近更新 更多