经过大量的谷歌搜索后,我无法找到解决这个问题的方法.我有这个布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/adlayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:stretchColumns="1"
android:layout_weight="1"
>
<TableRow android:id="@+id/tableRow1" android:layout_width="fill_parent" android:layout_height="wrap_content">
<TextView android:padding="6dip" android:text="@string/barcode_format" android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
<EditText android:padding="6dip" android:layout_width="fill_parent" android:id="@+id/edit_barcode_format" android:layout_height="wrap_content"></EditText>
</TableRow>
<TableRow android:id="@+id/tableRow1" android:layout_width="fill_parent" android:layout_height="wrap_content">
<TextView android:padding="6dip" android:text="@string/barcode_type" android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
<EditText android:padding="6dip" android:layout_width="fill_parent" android:id="@+id/edit_barcode_type" android:layout_height="wrap_content"></EditText>
</TableRow>
</TableLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
表格布局定义了一个表格.在手机上看起来不错,但在平板电脑上,edittext视图看起来太大了.我想为布局设置最大宽度,并将窗体绘制为居中.
TextView当文本比文本长时,我希望有一个单行显示最后3个点TextView.我不知道为什么 - 但我不懂.
我已经解决了类似StackOverflow的问题,但我最终没有解决方案.也许某人有一些有用的提示.
<LinearLayout
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:orientation="vertical">
<TextView
android:textStyle="bold"
android:text="Full Name"
android:layout_height="wrap_content"
android:textSize="16sp"
android:layout_width="wrap_content"
android:id="@+id/lName"
android:layout_gravity="center_vertical"
android:maxLines="1"
android:ellipsize="end"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
在LinearLayout上述嵌套到2以外LinearLayouts.也许这一点很重要.我已经尝试了" singleLine" 这个属性,但是有些人说这个已被弃用,无论如何它都不起作用.
组布局中的边距似乎不起作用.
例如,
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_margin="40dip"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="I'm a button" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
应显示一个四边有40p边距的按钮.但是,它在右侧和底部有80p的边距.
难道我做错了什么?这是一个错误吗?
解决方法是使用重力,但这只适用于均匀的边距.
顺便说一句,这里有一个类似的问题,但尚未得到解答.
我需要测量ListView的总高度,但似乎我总是得到错误的值.我正在使用此代码:
public static void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
return;
}
int totalHeight = 0;
int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(),
MeasureSpec.AT_MOST);
Log.w("DESIRED WIDTH", String.valueOf(listAdapter.getCount()));
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(desiredWidth, MeasureSpec.UNSPECIFIED);
totalHeight += listItem.getMeasuredHeight();
Log.w("HEIGHT"+i, String.valueOf(totalHeight));
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight
+ (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
listView.requestLayout();
}
Run Code Online (Sandbox Code Playgroud)
问题是我收到的身高比我应该收到的高.每个列表项的测量方式都不同,所有项都具有相同的高度,所以绝对不应该这样做.每个元素的高度至少是它的实际高度的两倍.
先感谢您.
EDIT1:
我有两个ListView,它们都有6-7 EditText字段的项目.如果用户想要在EditText中写入/删除值,我会显示/隐藏ListView.一切都很好,除非我想显示列表,它需要大量的空间,因为方法计算ListView需要大量的空间.因为我在ListView下面有很多空的空间.就像需要三倍空的空间.
height android listview android-listview android-linearlayout
p我正在使用线性布局,并希望设置视图的最大高度.在"正常"情况下,我希望视图使用"wrap_content".然而,偶尔情况可能会将布局推向不合需要的尺寸.发生这种情况时,我想将高度限制在最大300dp.
当布局中的列表超过4个列表项时,我使用以下设置了视图的大小:
LinearLayout listLayout = (LinearLayout) dialog.findViewById(R.id.listLayout);
if(list.size() > 4){
LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 300);
listLayout.setLayoutParams(params);
}
Run Code Online (Sandbox Code Playgroud)
查看文档使我不了解所应用的度量单位.在这种情况下(dp,sp,px,...),有哪些计量单位?
运行测试,甚至将值设置为100都会使列表超出所需的高度.
请指教
我有一个LinearLayout视图,我试图添加一个分隔符,使其看起来与默认的ListView控件完全相同.我想在默认的Android(Nexus S 2.3.3)联系人应用程序中复制编辑联系人,我相信LinearLayout最适合性能.
我正在使用代码来复制分隔符,如下所示:
<View
android:id="@+id/Separator"
android:layout_width="fill_parent"
android:layout_height="?android:attr/dividerHeight"
android:background="?android:attr/divider"/>
Run Code Online (Sandbox Code Playgroud)
如何访问默认分频器颜色或drawable以及分频器高度?我希望这与我设置的ListViews相匹配,所以我认为使用Android系统属性是最好的.上面的代码崩溃,如下所示,所以我假设我无法访问这些属性或正在解决这个问题.
03-13 22:59:38.851: ERROR/AndroidRuntime(3575): Caused by: java.lang.RuntimeException: Binary XML file line #26: You must supply a layout_height attribute.
Run Code Online (Sandbox Code Playgroud) 我为方形布局创建了自己的类:
public class SquareLayout extends LinearLayout{
public SquareLayout(Context context) {
super(context);
}
public SquareLayout(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public SquareLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int width = MeasureSpec.getSize(widthMeasureSpec);
int height = MeasureSpec.getSize(heightMeasureSpec);
int size = width > height ? height : width;
setMeasuredDimension(size, size);
}
Run Code Online (Sandbox Code Playgroud)
然后,在我的xml中:
...
<com.myApp.SquareLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center_horizontal"
android:orientation="horizontal" >
<ImageView
android:id="@+id/cellImageView"
android:adjustViewBounds="true"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:padding="2dp"
android:scaleType="centerCrop"
android:src="@drawable/image" /> …Run Code Online (Sandbox Code Playgroud) 我有一个RelativeLayout包含2 LinearLayouts其中一个部分覆盖另一个.我想让LinearLayout顶部的一部分透明,所以我也可以看到第二个LinearLayout 知道我有2个图像作为2的背景LinearLayouts.
我一直试图layout_gravity在横向使用linear layout.但它似乎没有用.我不希望使用relative layout或任何其他布局.我想知道为什么它不与工作linear layout.我刚才使用layout_gravity的vertical线性布局,它在我的预期的方式工作过.
<LinearLayout
android:id="@+id/shata"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<TextView
android:id="@+id/title_textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textColor="@color/black"
android:text="shata1"
android:textAppearance="?android:attr/textAppearanceMedium"
/>
<TextView
android:id="@+id/map_imageview"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="right"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="shata2"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,线性布局有一个orientation=horizontal和width=match_parent(它只是在根布局内).但是,LinearLayout尽管我已经分别给出了它们layout_gravity=center,但两个TextView都显示在左侧layout_gravity=right.
我想在我的上面只添加一个底部和一个顶部边框Linearlayout.我试过这样做:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:bottom="1dp"
android:top="1dp">
<shape android:shape="rectangle">
<solid android:color="#FFFFFF" />
<stroke
android:width="1dp"
android:color="#000" />
</shape>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
但它在形状周围添加了边框..
请问你能帮帮我吗 ?