如何在android中水平制作图像中心

时间:2016-05-07 09:31:36

标签: android

这是布局文件。

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/card_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="8dp">

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="8dp">

        <ImageView
            android:id="@+id/thumbnail"
            android:layout_width="300dp"
            android:layout_height="200dp"
            android:layout_centerHorizontal="true"
            android:adjustViewBounds="true"
            android:scaleType="fitXY" />

        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/thumbnail"
            android:textSize="24sp" />

        <TextView
            android:id="@+id/offer"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/title" />

    </RelativeLayout>

</android.support.v7.widget.CardView>

即使我已经提到过android:layout_centerHorizontal="true",但静止图片并未居中。

如何使图像水平居中?任何帮助将不胜感激。

6 个答案:

答案 0 :(得分:1)

请尝试这个。您必须为相对布局设置匹配父属性。

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="8dp">

    <ImageView
        android:id="@+id/thumbnail"
        android:layout_width="300dp"
        android:layout_height="200dp"
        android:layout_centerHorizontal="true"
        android:adjustViewBounds="true"
        android:scaleType="fitXY"
        android:src="@mipmap/ic_launcher"/>

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/thumbnail"
        android:text="abc"
        android:textSize="24sp"/>

    <TextView
        android:id="@+id/offer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/title"
        android:text="abc"
        />

</RelativeLayout>

答案 1 :(得分:1)

如果您想将图片In [1]: a = np.array(range(6)).reshape((1,2,3)) In [2]: mask = np.array([True, True, True]) In [3]: a Out[3]: array([[[0, 1, 2], [3, 4, 5]]]) In [4]: a[0, :, mask] Out[4]: array([[0, 3], [1, 4], [2, 5]]) In [5]: a[0, :, mask].shape Out[5]: (3, 2) In [6]: b = np.array(range(6)).reshape((2,3)) In [7]: b[:, mask].shape Out[7]: (2, 3) 设置为设备屏幕,请将centerHorizontal宽度设为RelativeLayout

答案 2 :(得分:0)

请尝试将android:layout_width更改为match_parent的{​​{1}}。

应该是这样的:

<RelativeLayout>

答案 3 :(得分:0)

  

您正在设置Relative Layout's android:layout_width="wrap_content",因此会将其left对齐,因为您在子Image View中使用的属性为{{ 1}}不会受到影响,因此请将android:layout_centerHorizontal="true"更改为Relative Layout

使用此代码。

android:layout_width="match_parent"

答案 4 :(得分:0)

替换RelativeLayout宽度

public class anaEkrn extends javax.swing.JFrame {

public anaEkrn() {
    initComponents();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">                          
private void initComponents() {

    jPanel1 = new javax.swing.JPanel();
    jLabel1 = new javax.swing.JLabel();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/market2/images/tumu.png"))); // NOI18N
    jLabel1.setText("jLabel1");
    jLabel1.addMouseListener(new java.awt.event.MouseAdapter() {
        public void mouseEntered(java.awt.event.MouseEvent evt) {
            jLabel1MouseEntered(evt);
        }
        public void mousePressed(java.awt.event.MouseEvent evt) {
            jLabel1MousePressed(evt);
        }
    });

    javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
    jPanel1.setLayout(jPanel1Layout);
    jPanel1Layout.setHorizontalGroup(
        jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(jPanel1Layout.createSequentialGroup()
            .addContainerGap()
            .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 79, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addContainerGap(197, Short.MAX_VALUE))
    );
    jPanel1Layout.setVerticalGroup(
        jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(jPanel1Layout.createSequentialGroup()
            .addContainerGap()
            .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 97, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
    );

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
            .addContainerGap(298, Short.MAX_VALUE)
            .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addGap(23, 23, 23))
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addGap(19, 19, 19)
            .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addContainerGap(328, Short.MAX_VALUE))
    );

    pack();
}// </editor-fold>                        

private void jLabel1MouseEntered(java.awt.event.MouseEvent evt) {                                     
    ImageIcon icon= new ImageIcon(getClass().getResource("/images/tumu.png"));
    jLabel1.setIcon(icon);
}                                    

private void jLabel1MousePressed(java.awt.event.MouseEvent evt) {                                     
    ImageIcon II = new ImageIcon(getClass().getResource("/images/tumu_hover.png"));
    jLabel1.setIcon(II);
}                                    

public static void main(String args[]) {
    /* Set the Nimbus look and feel */
    //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
    /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
     * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
     */
    try {
        for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
            if ("Nimbus".equals(info.getName())) {
                javax.swing.UIManager.setLookAndFeel(info.getClassName());
                break;
            }
        }
    } catch (ClassNotFoundException ex) {
        java.util.logging.Logger.getLogger(anaEkrn.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (InstantiationException ex) {
        java.util.logging.Logger.getLogger(anaEkrn.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (IllegalAccessException ex) {
        java.util.logging.Logger.getLogger(anaEkrn.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (javax.swing.UnsupportedLookAndFeelException ex) {
        java.util.logging.Logger.getLogger(anaEkrn.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }
    //</editor-fold>

    /* Create and display the form */
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new anaEkrn().setVisible(true);
        }
    });
}

// Variables declaration - do not modify                     
public javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanel1;
// End of variables declaration                   

android:layout_width="wrap_content "  

答案 5 :(得分:0)

1)父母的宽度(RelativeLayout)应为match_parent

2)在ImageView中使用android:layout_centerHorizontal="true"android:layout_gravity="center_horizontal"

这会将您的imageview水平设置在设备屏幕中心