0

检测用于 XML 项目的重力标志的正确方法是什么?我正在努力实现以下目标:

  1. 如果我TableLayout(myTbl) 的重力设置为Gravity.TOP,那么我希望重力设置为Gravity.CENTER_VERTICAL
  2. 否则,如果我TableLayout(myTbl) 的重力设置为Gravity.CENTER_VERTICAL,那么我希望重力设置为Gravity.BOTTOM

XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:orientation="vertical">
    <Button
        android:id="@+id/btn_up"
        android:text="move up"
        android:background="@android:color/transparent"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:layout_gravity="top"
        android:onClick="moveup_click"
        />

    <TableLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/myTbl"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:gravity="center_vertical"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        >
        <TableRow
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dp"
            >

            <Button
                android:text="@string/btn_A"
                android:layout_column="0"
                android:layout_height="match_parent"
                android:layout_width="0dip"
                android:layout_weight="1"
                />

            <Button
                android:text="@string/btn_B"
                android:layout_column="1"
                android:layout_height="match_parent"
                android:layout_width="0dip"
                android:layout_weight="1"
                />
        </TableRow>

        <TableRow
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dp"
            >

            <Button
                android:text="@string/btn_C"
                android:layout_column="0"
                android:layout_height="match_parent"
                android:layout_width="0dip"
                android:layout_weight="1"
                />

            <Button
                android:text="@string/btn_D"
                android:layout_column="1"
                android:layout_height="match_parent"
                android:layout_width="0dip"
                android:layout_weight="1"
                />
        </TableRow>
    </TableLayout>

    <Button
        android:id="@+id/btn_down"
        android:text="move down"
        android:background="@android:color/transparent"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:layout_gravity="bottom"
        android:onClick="movedown_click"
        />

</LinearLayout>

爪哇

private Button myBtn;
private TableLayout myTbl;

public void movedown_click(View view) {
    if (myTbl.getGravity() == Gravity.TOP) {
        myTbl.setGravity(Gravity.CENTER_VERTICAL);
    } else if (myTbl.getGravity() == Gravity.CENTER_VERTICAL) {
        tblMain.setGravity(Gravity.BOTTOM);
    }
}

我尝试使用getGravity()但需要 API 24+,这不是我想要的。我的项目中使用的 API 低于 24。

4

1 回答 1

0

你应该使用getLayoutParams().gravity

private TableLayout myTbl;

public void btn_click(View view) {
    TableLayout.LayoutParams params = (TableLayout.LayoutParams) myTbl.getLayoutParams();
    if (params.gravity == Gravity.TOP) {
        myTbl.setGravity(Gravity.CENTER_VERTICAL);
    } else if (params.gravity == Gravity.CENTER_VERTICAL) {
        myTbl.setGravity(Gravity.BOTTOM);
    }
}
于 2017-09-26T22:30:49.800 回答