我有一个非常简单的问题,但我显然做错了什么。我已经尝试了很多方法来做到这一点,但总会有一些事情搞砸了。
我有一个带有水平LinearLayout的ListView作为标题。我想要<和>作为“后退和下一个”小部件,在LinearLayout的最左侧和最右侧部分。 LIST HEADER
部分应该在它们之间居中。
使LIST HEADER
具有属性android:layout_width="match_parent"
切断右箭头。否则它会放在左箭头的顶部,即使它出现在XML文件中的LIST HEADER
TextView
之后。
< LIST HEADER > List item number 1 List item number 2 List item number 3
在这个阶段我不是Android新手,但这似乎很基本。任何帮助,将不胜感激。 我应该补充一点,我没有使用eclipse。
CURRENT XML(在尝试了这么多事情之后有点麻烦,道歉):
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:orientation="horizontal"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:id="@+id/LeftFormulaHeaderLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:textSize="@dimen/text_huge"
android:id="@+id/LeftFormulaHeader"
android:text="<"/>
</RelativeLayout>
<TextView
android:layout_width="200dip"
android:layout_height="wrap_content"
android:textSize="@dimen/text_huge"
android:ellipsize="end"
android:scrollHorizontally="false"
android:singleLine="true"
android:gravity="center"
android:id="@+id/FormulaHeader"/>
<RelativeLayout
android:id="@+id/RightFormulaHeaderLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/RightFormulaHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:textSize="@dimen/text_huge"
android:text=">"/>
</RelativeLayout>
</RelativeLayout>
</LinearLayout>
<ListView
android:id="@+id/TheList"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#000033"
android:layout_weight="1"
android:drawSelectorOnTop="false" />
<TextView
android:id="@+id/empty_list_item"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"
android:text="@string/empty_list" />
</LinearLayout>
答案 0 :(得分:3)
您可以在RelativeLayout
的帮助下使用以下代码,而不是弄乱LinearLayout
:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/Wrapper"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="horizontal"
>
<ImageView
android:id="@+id/icon1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher"
android:layout_alignParentLeft="true" />
<ImageView
android:id="@+id/icon2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher"
android:layout_centerVertical="true"
android:layout_centerInParent="true" />
<ImageView
android:id="@+id/icon3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher"
android:layout_alignParentRight="true" />
</RelativeLayout>
<强> OutputScreenShot:强>
即使这段代码也可以帮助您在垂直布局中居中。您可以将第二个ImageView
更改为TextView
以显示要显示的文本。希望这会有所帮助。
答案 1 :(得分:2)
您的主要问题:gravity
会影响TextView
内文字的定位。您希望alignParentLeft
/ - Right
和centerHorizontal
了解您正在做的事情(尽管gravity="center"
仍然保持标题在其视图中居中)。
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:textSize="@dimen/text_huge"
android:id="@+id/LeftFormulaHeader"
android:text="<"/>
<TextView
android:layout_width="200dip"
android:layout_height="wrap_content"
android:textSize="@dimen/text_huge"
android:ellipsize="end"
android:scrollHorizontally="false"
android:singleLine="true"
android:layout_centerHorizontal="true"
android:gravity="center"
android:id="@+id/FormulaHeader"
android:text="HEADER"/>
<TextView
android:id="@+id/RightFormulaHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:textSize="@dimen/text_huge"
android:text=">"/>
</RelativeLayout>
答案 2 :(得分:1)
您应该可以使用权重属性:
<!-- Your header layout. -->
<LinearLayout orientation="horizontal" weight_sum="1">
<!-- Button left. -->
<TextView layout_width="30dp" layout_height="30dp" />
<!-- Headline. -->
<TextView layout_width="0dp" layout_height="30dp" layout_weight="1" gravity="center" />
<!-- Button right. -->
<TextView layout_width="30dp" layout_height="30dp" />
</LinearLayout>
以上代码不适用于复制/粘贴。您需要添加您的详细信息。我只想指出最重要的事情:
因此,除了左/右小部件的2 * 30dp之外,标题最终将占用所有包装器的可用空间。
答案 3 :(得分:1)
尝试使用我的下面的代码,我做了一些相关的更改。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:orientation="horizontal" > <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" > <RelativeLayout android:id="@+id/LeftFormulaHeaderLayout" android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:id="@+id/LeftFormulaHeader" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="left" android:text="<" android:textSize="20sp" /> </RelativeLayout> <TextView android:id="@+id/FormulaHeader" android:layout_width="200dip" android:layout_height="wrap_content" android:ellipsize="end" android:gravity="center" android:layout_centerHorizontal="true" android:scrollHorizontally="false" android:singleLine="true" android:text="kajsgfuisagf" android:textSize="20sp" /> <RelativeLayout android:id="@+id/RightFormulaHeaderLayout" android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:id="@+id/RightFormulaHeader" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_alignParentRight="true" android:text=">" android:textSize="20sp" /> </RelativeLayout> </RelativeLayout> </LinearLayout> <ListView android:id="@+id/TheList" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:background="#000033" android:drawSelectorOnTop="false" /> <TextView android:id="@+id/empty_list_item" android:layout_width="match_parent" android:layout_height="match_parent" android:text="empty_list" android:visibility="gone" />