以下是我的编辑器和设备显示内容的比较:
问题是:
它在编辑器中正常工作,但正如您所看到的,布局在实际设备上的行为有很大不同。
我的问题在哪里以及如何解决?
用于图标的库是: https://github.com/code-mc/material-icon-lib
它直接从ImageView扩展。
布局XML:
<TableLayout
android:id="@+id/menuLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:stretchColumns="*" >
<TableRow
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_width="match_parent">
<LinearLayout
android:layout_weight="1"
android:orientation="horizontal"
android:layout_height="match_parent"
android:layout_width="match_parent">
<android.support.v7.widget.AppCompatTextView
android:id="@+id/teenSelection"
android:textColor="@color/WHITE"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:layout_weight="1"
android:textStyle="bold"
android:textSize="30sp"
android:text="TEEN" />
<android.support.v7.widget.AppCompatTextView
android:id="@+id/adultSelection"
android:textColor="@color/WHITE"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:layout_weight="1"
android:textStyle="bold"
android:textSize="30sp"
android:text="ADULT"/>
<android.support.v7.widget.AppCompatTextView
android:id="@+id/seniorSelection"
android:textColor="@color/WHITE"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:layout_weight="1"
android:textStyle="bold"
android:textSize="30sp"
android:text="SENIOR"/>
</LinearLayout>
</TableRow>
<TableRow
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_width="match_parent">
<net.steamcrafted.materialiconlib.MaterialIconView
android:layout_weight="1"
android:id="@+id/confirmButton"
app:materialIcon="check"
app:materialIconColor="#fff"
android:scaleType="center"
android:layout_height="match_parent"
android:layout_width="match_parent"/>
</TableRow>
</TableLayout>
答案 0 :(得分:2)
您已将heights
中的TableRows
设置为wrap_content
,但它们必须是match_parent
,如下所示:
<TableRow
android:layout_weight="1"
android:layout_height="match_parent"
android:layout_width="match_parent">
否则忽略weight
的{{1}}。
答案 1 :(得分:2)
您应该尝试 PercentRelativeLayout
在应用级 build.gradle 中添加此
compile 'com.android.support:percent:23.3.0'
并用此更改您的布局。
<android.support.percent.PercentRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/layoutTop"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:weightSum="3"
app:layout_heightPercent="50%"
app:layout_widthPercent="100%">
<android.support.v7.widget.AppCompatTextView
android:id="@+id/teenSelection"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="TEEN"
android:textColor="@android:color/white"
android:textSize="30sp"
android:textStyle="bold" />
<android.support.v7.widget.AppCompatTextView
android:id="@+id/adultSelection"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="ADULT"
android:textColor="@android:color/white"
android:textSize="30sp"
android:textStyle="bold" />
<android.support.v7.widget.AppCompatTextView
android:id="@+id/seniorSelection"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="SENIOR"
android:textColor="@android:color/white"
android:textSize="30sp"
android:textStyle="bold" />
</LinearLayout>
<net.steamcrafted.materialiconlib.MaterialIconView
android:id="@+id/confirmButton"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_below="@+id/layoutTop"
android:scaleType="center"
app:layout_heightPercent="50%"
app:layout_widthPercent="100%"
app:materialIcon="check"
app:materialIconColor="#fff" />
</android.support.percent.PercentRelativeLayout>
答案 2 :(得分:1)
像这样在LinearLayout中添加你的TableRow。 我工作。我做了测试。
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:stretchColumns="*">
<LinearLayout
android:orientation="vertical"
android:layout_height="match_parent"
android:layout_width="match_parent">
<TableRow
android:layout_weight="1"
android:orientation="vertical"
android:layout_height="match_parent"
android:layout_width="match_parent">
<LinearLayout
android:orientation="horizontal"
android:layout_height="match_parent"
android:layout_width="match_parent">
<android.support.v7.widget.AppCompatTextView
android:id="@+id/teenSelection"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:layout_weight="1"
android:background="@color/black_slow"
android:textStyle="bold"
android:textSize="30sp"
android:text="TEEN" />
<android.support.v7.widget.AppCompatTextView
android:id="@+id/adultSelection"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:layout_weight="1"
android:background="@color/black_slowest"
android:textStyle="bold"
android:textSize="30sp"
android:text="ADULT"/>
<android.support.v7.widget.AppCompatTextView
android:id="@+id/seniorSelection"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:background="@color/colorPrimaryDark"
android:layout_weight="1"
android:textStyle="bold"
android:textSize="30sp"
android:text="SENIOR"/>
</LinearLayout>
</TableRow>
<TableRow
android:layout_weight="1"
android:orientation="vertical"
android:layout_height="match_parent"
android:layout_width="match_parent">
<net.steamcrafted.materialiconlib.MaterialIconView
android:id="@+id/confirmButton"
app:materialIcon="check"
app:materialIconColor="#fff"
android:scaleType="center"
android:layout_height="match_parent"
android:layout_width="match_parent"/>
</TableRow>
</LinearLayout>
</TableLayout>