我在ScrollView中嵌入ListView时遇到了一个问题,或者至少我觉得问题来自哪里.ListView元素非常简单:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/item_root"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/general_background_list_middle"
android:paddingTop="4dp"
android:paddingBottom="4dp"
android:paddingRight="0dp"
android:paddingLeft="0dp">
<ImageView
android:id="@+id/chat_friends_avatar"
android:layout_width="45dp"
android:layout_height="45dp"
android:layout_marginLeft="7dp"
android:layout_marginRight="8dp"
android:paddingRight="0dp"
android:paddingLeft="0dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:src="@drawable/friends_icon_avatar_default"/>
<TextView
android:id="@+id/chat_message_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/chat_friends_avatar"
android:layout_alignParentTop="true"
android:layout_marginRight="35dp"
android:maxLines="10"
android:textSize="12dp"/>
<TextView
android:id="@+id/chat_friend_name"
android:layout_width="140dp"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
style="@style/SubText"
android:layout_toRightOf="@id/chat_friends_avatar"
android:layout_below="@id/chat_message_text" />
<TextView
android:id="@+id/chat_message_time"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:layout_marginRight="8dp"
android:layout_marginTop="3dp"
style="@style/SubText"
android:layout_alignParentRight="true"
android:layout_below="@id/chat_message_text" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
但是,当我在ScrollView中嵌入这样的元素列表时,在其他一些元素之间,行没有完全显示,如果文本被包装,它们将被剪裁(见下图).ListView在ScrollView中实例化如下:
<ListView
android:id="@+id/info_chat_listview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:cacheColorHint="@color/frame_background_color"
android:clickable="false"
android:divider="@null"
android:footerDividersEnabled="false"
android:focusable="false" >
</ListView>
Run Code Online (Sandbox Code Playgroud)
如果ListView的高度设置为"wrap_content",则仅显示第一个元素.这就是为什么我使用一种方法来计算列表行的高度:
private int getCommentsListHeight() {
if (mChatAdapter != null && mChatAdapter.getCount() != 0) …Run Code Online (Sandbox Code Playgroud) 我有点坚持这一个 - 首先,下面的链接已经然而有用的,我想出了一个有点能见度的问题:
链接:检查视图可见性
我有一个滚动视图(父)和若干子视图(LinearLayout- > TableLayout)等有许多项的予设定为View.GONEXML中(android:visibility="gone").
我有一些简单的代码来确定它是否可见getVisibility()但是当我设置项目View.VISIBLE并尝试立即getDrawingRect()我得到一个带有零的Rect.任何进一步点击都会得到正确的坐标
现在,这可能是因为观点从来没有抽(如XML定义),使其返回没有坐标然而,我设置View.VISIBLE试图确定屏幕可视性之前.可能是因为我需要从onDraw()获得某种回调吗?或者可能在代码中设置隐藏项目的视图可见性.有点烦人;(
一些代码:
Rect scrollBounds = new Rect();
scroll.getHitRect(scrollBounds);
Rect viewBounds = new Rect();
if (view.getVisibility() == View.GONE) {
view.setVisibility(View.VISBLE)
viewBounds.getDrawingRect(viewBounds);
if (!Rect.intersects(scrollBounds, viewBounds) {
// do somthing
}
}
Run Code Online (Sandbox Code Playgroud)
布局区域如下:
ScrollView
LinearLayout
TableLayout
ButtonHiddenView当然,我很可能完全以错误的方式解决这个问题 - 基本上我只是想确保scrollview定位自己以便可以看到已经变得可见的视图.
如果需要任何其他信息,请告诉我!
我有一个简单的布局如下:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#D23456" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:background="#FFFFFF" >
<ImageView
android:layout_width="match_parent"
android:layout_height="800dp"
android:src="@drawable/ic_launcher" />
</LinearLayout>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)
scrollview的背景是粉红色,线性布局里面有android图标图像,高度为800dp(不适合屏幕).我期待看到的是,imageview浮动在粉红色的背景中,每边(顶部,底部,左侧,右侧)的边距为10dp.但是当我滚动到底部时,滚动视图不会滚动到保证金,所以滚动的底部是imageview而不是粉红色的边距.
我怎么能阻止这个?这使用户认为页面尚未结束并使他想要滚动更多.
我们的一个视图有一个ScrollView根布局.当设备旋转并被onConfigurationChanged()调用时,我们希望能够获得ScrollView新的宽度/高度.我们的代码如下所示:
@Override
public void onConfigurationChanged(Configuration newConfig) {
Log.d(TAG, "Width: '" + findViewById(R.id.scrollview).getWidth() + "'");
Log.d(TAG, "Height: '" + findViewById(R.id.scrollview).getHeight() + "'");
super.onConfigurationChanged(newConfig);
Log.d(TAG, "Width: '" + findViewById(R.id.scrollview).getWidth() + "'");
Log.d(TAG, "Height: '" + findViewById(R.id.scrollview).getHeight() + "'");
}
Run Code Online (Sandbox Code Playgroud)
我们的AndroidManifest.xml的相关部分如下所示:
<activity android:name=".SomeActivity"
android:configChanges="keyboardHidden|orientation">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
最后,我们布局的相关部分如下所示:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scrollview"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
>
<LinearLayout android:id="@+id/container"
android:orientation="vertical"
android:layout_height="fill_parent"
android:minHeight="200dip"
android:layout_width="fill_parent"
>
Run Code Online (Sandbox Code Playgroud)
在我们的Droid上,我们期望ScrollView的宽度在切换到横向时变为854,在切换回纵向时变为480(并且高度与等效开关相同,减去菜单栏).但是,我们正好相反.这是我们的LogCat:
// Switching to landscape:
03-26 11:26:16.490: DEBUG/ourtag(17245): Width: '480' // Before super …Run Code Online (Sandbox Code Playgroud) 我想让垂直滚动条永久可见.目前滚动条仅在我尝试滚动滚动视图中包含的文本视图时出现.这是我的XML声明.
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@id/radio_group"
android:layout_margin="5dp"
android:scrollbars="vertical"
android:scrollbarAlwaysDrawVerticalTrack="true" >
<TextView
android:id="@+id/question"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="20sp"
android:textColor="#FF000000"
android:textStyle="bold" />
</ScrollView>
Run Code Online (Sandbox Code Playgroud)
感谢您的时间.
我的应用程序使用ListView显示单元格中不同项目的应用程序.它必须有照片和名称,但它恰好有描述和图标.
问题是:当我滚动ListView并回到顶部时,描述和图标已经消失,只有图像和名称.我的印象是描述和图标已被删除,每行的大小相同.
我(BaseAdapter)为我使用自定义适配器ListView:
public class MyAdapterPark extends BaseAdapter {
private ArrayList<DataPark> datapark;
private LayoutInflater myInflater;
public MyAdapterPark (Context context, ArrayList<DataPark> _datapark)
{
this.myInflater = LayoutInflater.from(context);
this.datapark = _datapark;
}
@Override
public int getCount() {
return this.datapark.size();
}
@Override
public Object getItem(int arg0) {
return this.datapark.get(arg0);
}
@Override
public long getItemId(int position) {
return position;
}
public static class ViewHolder {
ImageView image;
TextView text01;
ImageView facebook;
ImageView twitter;
ImageView linkedin;
ImageView blog; …Run Code Online (Sandbox Code Playgroud) 我的问题是我(在 SwiftUI 中)有一个 ScrollView,里面有一个 foreach。知道 foreach 何时加载我的所有条目,我希望最后一个条目得到关注。
我做了一些谷歌研究,但我没有找到任何答案。
ScrollView {
VStack {
ForEach (0..<self.entries.count) { index in
Group {
Text(self.entries[index].getName())
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个简单的看法:
var body: some View {
NavigationView {
ScrollView {
VStack {
ForEach(0..<2) { _ in
CardVew(for: cardData)
}
}
}
.navigationBarTitle("Testing", displayMode: .automatic)
}
}
Run Code Online (Sandbox Code Playgroud)
但是您可以用任何东西替换 CardView - 故障仍然存在。故障视频
有办法解决吗?
Xcode 12.0.1,斯威夫特 5
我有一个应用程序,在xcode 4.5和ios 6.1滚动时工作得很好.但是,在下载xcode 5和iOS 7后,我的滚动视图不再起作用了.???
这是我的.h文件:
#import <UIKit/UIKit.h>
@interface GrillretterViewController : UIViewController
@property (strong, nonatomic) IBOutlet UIScrollView *grillretterScroller;
@property (assign) CGPoint rememberContentOffset;
@end
Run Code Online (Sandbox Code Playgroud)
这是我的.m文件:
#import "GrillretterViewController.h"
@interface GrillretterViewController ()
@end
@implementation GrillretterViewController
@synthesize grillretterScroller, rememberContentOffset;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
[grillretterScroller setScrollEnabled:YES];
// Do any additional setup after loading the view.
}
- (void) viewDidAppear:(BOOL)animated {
[grillretterScroller setContentSize:CGSizeMake(300, 915)]; …Run Code Online (Sandbox Code Playgroud) 我正在尝试在iOS中实现RecyclerView类似的功能UICollectionView.我想contentInset在回收站视图的底部设置一个,但我找不到这样做的选项.
Android有类似的东西吗?
scrollview ×10
android ×6
listview ×2
swiftui ×2
textview ×2
animation ×1
foreach ×1
ios7 ×1
layout ×1
objective-c ×1
orientation ×1
scroll ×1
swift ×1
swiftui-list ×1
uiscrollview ×1
view ×1
visibility ×1
xcode5 ×1
xml ×1