如果你看一下this图片,你会立即看到我的问题在哪里。我喜欢旗帜'名称与图片垂直对齐,如下所示:
我找到了一些答案,但我仍然无法解决我的问题。这是主页面的xml代码(您可以在其中找到列表视图)。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_vertical" >
<TextView
android:id="@+id/textview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<ListView
android:id="@+id/listview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
此文件名为 simplerow.xml ,它包含我必须应用于ListVeiw的布局。
<?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="horizontal"
>
<ImageView
android:id="@+id/flag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/gametitle"
android:paddingTop="10dp"
android:paddingRight="20dp"
android:paddingLeft="20dp"
android:paddingBottom="10dp"
/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_vertical" >
<TextView
android:id="@+id/txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="10dp"
android:paddingBottom="10dp"
/>
</LinearLayout>
</LinearLayout>
如果需要,这是将标志/名称添加到ListView的代码。
SimpleAdapter adapter = new SimpleAdapter(view.getContext(), aList, R.layout.simplerow, from, to);
// Getting a reference to listview of main.xml layout file
ListView listView = (ListView) view.findViewById(R.id.listview);
// Setting the adapter to the listView
listView.setAdapter(adapter);
尽管LinearLayout设置了android:orientation="vertical"
和android:gravity="center_vertical"
,但名称不是垂直居中的。我该怎么办?
答案 0 :(得分:1)
试试这个..
<?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="wrap_content"
android:orientation="horizontal" >
<ImageView
android:id="@+id/flag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/gametitle"
android:paddingBottom="10dp"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:paddingTop="10dp" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:orientation="vertical" >
<TextView
android:id="@+id/txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="10dp"
android:paddingTop="10dp"
/>
</LinearLayout>
答案 1 :(得分:1)
在文字视图中添加android:layout_gravity="center_vertical"
。
或在主布局中使用此
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<ImageView
android:layout_width="150dp"
android:layout_height="match_parent"
android:adjustViewBounds="true"
android:scaleType="centerInside"
android:src="@drawable/e" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="5dp"
android:layout_weight="1"
android:text="text"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="#FF9900" />
</LinearLayout>
答案 2 :(得分:1)
android:layout_gravity="center_vertical"
是你想要的。它会将LinearLayout置于其父级中心,然后android:gravity="center_vertical"
将使TextView居中。所以将LinearLayout转换为这个:
<?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="horizontal">
<ImageView
android:id="@+id/flag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/gametitle"
android:paddingTop="10dp"
android:paddingRight="20dp"
android:paddingLeft="20dp"
android:paddingBottom="10dp"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_vertical"
android:layout_gravity="center_vertical">
<TextView
android:id="@+id/txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="10dp"
android:paddingBottom="10dp"/>
</LinearLayout>
</LinearLayout>
答案 3 :(得分:0)
尝试将linearlayout的layout_gravity设置为centervertical。
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center_vertical" >
<TextView
android:id="@+id/txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="10dp"
android:paddingBottom="10dp"
/>