可以ListView横向制作吗?我这样做了使用图库视图,但所选项目自动进入屏幕中心.我不希望所选项目在我点击的同一位置.我该如何纠正这个问题?我的想法是设置ListView水平滚动.分享你的想法?
可能重复:
Android中的水平ListView?
像Android中的许多东西一样,你不会认为这会是一个如此难的问题,但哦,哦,你会错的.而且,与Android中的许多内容一样,API甚至没有提供合理可扩展的起点.如果我要打开自己的ListView,我会被诅咒,当我想要的只是把它拿走并把它转向它.\咆哮
好吧,现在我已经完成了冒烟,让我们谈谈问题本身.我需要的基本上就像是Gallery,但没有中心锁定功能.我真的不需要ListViewlistSelector,但这是一个很好的选择.大多数情况下,我可以用LinearLayout内部的方式做我想做的事情ScrollView,但我需要来自a的子视图ListAdapter,我真的希望有一个视图回收器.我真的不想写任何布局代码.
我偷看了其中一些类的源代码......
图库:如果我覆盖大多数'onXyz'方法,复制所有源代码,但不要调用,看起来我可以使用Gallery scrollIntoSlots().但我敢肯定,如果我这样做,我会遇到一些无法访问的成员字段或其他一些无法预料的后果.
AbsSpinner:由于该mRecycler字段是包私有的,我怀疑我是否能够扩展这个类.
AbsListView:看起来这个类只适用于垂直滚动,所以没有帮助.
AdapterView:我从来没有直接扩展这个类.如果你告诉我它很容易做,并且很容易自己动手RecycleBin,我会非常怀疑,但我会试一试.
我想我可以复制这两个 AbsSpinner并Gallery得到我想要的东西......希望那些类没有使用一些我无法访问的包私有变量.你们都认为这是一个好习惯吗?有没有人有任何教程或第三方解决方案可能会让我朝着正确的方向前进?
更新:
到目前为止我找到的唯一解决方案是自己完成所有工作.自从提出这个问题以来,我已经AdapterView从头开始重写并实现了自己的"HorizontalListView".真正覆盖Gallery的中心锁定功能的唯一方法是覆盖私有scrollIntoSlots方法,我认为这需要在运行时生成子类.如果你足够大胆地做到这一点,它可以说是最好的解决方案,但我不想依赖可能改变的无证方法.
下面的Swathi EP建议我给出Gallery一个OnTouchListener并覆盖滚动功能.如果你不关心你的列表中有一扔支持,或者如果它是没关系的意见,在一扔动画结束捕捉到中心,那么这会为你工作!然而,最终仍然证明在不移除支撑的情况下移除中心锁定特征是不可能的.而且我问你,什么样的名单不扔?
所以,唉,这对我不起作用.:-(但如果你对这种方法感兴趣,请继续阅读......
我还必须对Swathi的代码添加一些内容以获得我想要的内容.在GestureListener.onTouch,除了委托给手势检测器,我还必须返回true ACTION_UP和ACTION_CANCEL事件.这成功禁用了中心锁定功能,但它也禁用了投掷功能.我能够通过将自己的GestureListener委托给Gallery的onFling方法来重新启用fling .如果您想尝试一下,请进入ApiDemos示例代码并使用以下代码替换Gallery1.java类:
import com.example.android.apis.R;
import android.app.Activity;
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.GestureDetector;
import android.view.MenuItem;
import android.view.MotionEvent; …Run Code Online (Sandbox Code Playgroud) Android项目的build.gradle中buildtoolsVersionvs 之间有什么区别compileSdkVersion?
编辑:具体来说,我想澄清构建工具是什么?
在布局资源XML中,我有3个RelativeLayout(s),它们位于主RelativeLayout中.视图将垂直显示.这三个RelativeLayout()彼此相邻设置,我想让它们填满整个屏幕,无论屏幕大小是多少.我的布局视图:
<RelativeLayout 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"
android:background="@drawable/backg"
>
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginTop="@dimen/top_mr_image"
android:src="@drawable/temp" />
<RelativeLayout
android:id="@+id/r1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_below="@+id/imageView1"
android:layout_marginLeft="10dp"
android:background="@drawable/r1bg"
android:layout_weight="1"
>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_marginLeft="@dimen/txt_mr_right"
android:layout_marginRight="@dimen/txt_mr_right"
android:layout_marginTop="39dp"
android:text="S"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@id/textView1"
android:layout_marginLeft="@dimen/txt_mr_right"
android:layout_marginRight="@dimen/txt_mr_right"
android:text="T"
android:textAppearance="?android:attr/textAppearanceLarge" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/r2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignTop="@+id/r1"
android:layout_toRightOf="@+id/r1"
android:layout_weight="1" >
</RelativeLayout>
<RelativeLayout
android:id="@+id/r3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignTop="@+id/r2"
android:layout_toRightOf="@+id/r2"
android:layout_weight="1" >
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
我设置weight=1并layout_width=0dp为每个relativeLayout和这个技术使用按钮,我认为相同的将是relativeLayout,似乎我的想法是错误的.任何的想法?
UPD1:我添加了一张我想要的图像

我正在使用工具:listitem属性,通过recyclerview在设计版面中显示我的视图.问题是,它们总是出现在垂直列表中.有没有办法让设计版面编辑器水平显示它们?
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:listitem="@android:layout/simple_list_item_checked"/>
Run Code Online (Sandbox Code Playgroud)
我想要上面的图像,水平显示.在设计视图中.不在应用程序本身,我知道如何做到这一点.
我试图在我现有的画布中添加一些红色矩形,与特定的盒子一样,与预期的结果图像完全一样,但它们根本不显示,因为我的代码显示了当我部署应用程序时当前不希望的结果.我的代码是在顶行创建4个矩形,在底行创建4个矩形,但我只想在盒子2-6的顶部添加它,但我知道需要为盒子顶部的红色矩形添加额外的代码1和7.有谁知道我做错了什么以及如何解决这个问题?所有帮助将不胜感激.
public class RectangleTextView extends View {
private final Paint mBlackPaint = new Paint();
private final Paint mRedPaint = new Paint();
private final TextPaint mTextPaint;
public RectangleTextView(Context context, AttributeSet attrs) {
super(context, attrs);
int valueInDp = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1, getResources().getDisplayMetrics());
int valueInSp = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 20, getResources().getDisplayMetrics());
mRedPaint.setColor(Color.parseColor("#CC3333"));
mBlackPaint.setAntiAlias(false);
mBlackPaint.setColor(Color.BLACK);
mBlackPaint.setStrokeWidth(valueInDp);
mBlackPaint.setStyle(Paint.Style.STROKE);
mTextPaint = new TextPaint(TextPaint.ANTI_ALIAS_FLAG);
mTextPaint.setColor(Color.BLACK);
mTextPaint.setTextAlign(Paint.Align.CENTER);
mTextPaint.setTextSize(valueInSp);
mWindowPaint = new Paint();
mWindowPaint.setColor(Color.parseColor("#CC3333"));
mWindowPaint.setStrokeWidth(valueInDp);
}
private Paint mWindowPaint;
@Override protected void onDraw(Canvas canvas) {
super.onDraw(canvas); …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我有一个滚动视图.在我的应用程序的生命周期中,我动态地向滚动视图添加新视图.我可以添加几乎没有问题的视图,但我不能正确的维度.这是我想要的布局的草图:
在图像中,我有一个尺寸Width为的屏幕Height.它包含一个HorizontalScrollView(或者可能是一个,RecyclerView但我不知道如何使用这个),当添加视图时它会增长.我希望添加到视图中的每个项目的宽度等于屏幕高度的五分之一并具有匹配的高度.如果我对膨胀视图的宽度进行硬编码,我可以做到这一点,但是,我的视图在所有手机上的宽高比都不一样.
注意:我尝试过使用PercentRelativeLayout,但我无法使用它.不知道如何解决这个问题...任何想法?
关于赏金的注意事项:我会接受Java或C#(Xamarin)的答案!! 我的项目是在Xamarin,所以如果它适用于它,或者它可以很容易地适应在C#中工作会很好
我想做左侧滚动的权利,我猜是一个recylcer视图,但不确定它是否这样.我只需要有人指出我正确的方向.我想我需要一个Recyclerview的内部布局.
如果有人能指出我在哪里搞清楚这一点,我会非常感激!
如何在Android应用程序中为垂直蒙古文字制作水平滚动的ListView?
Android 对世界上许多语言都有相当好的支持,甚至是阿拉伯语和希伯来语等 RTL 语言。然而,没有像传统蒙古语这样的对自上而下的语言的内置支持(在内蒙古仍然很活跃,不要与西里尔蒙古语混淆)。下图显示了文本方向,为清楚起见添加了英文。

由于此功能未内置于 Android 中,因此应用程序开发的几乎每个方面都变得极其困难。对于水平 ListView 来说尤其如此,Android 中不支持开箱即用的水平 ListView。网上提供的信息也非常非常少。有许多传统蒙古文的应用程序开发人员,但无论是出于商业原因还是其他原因,他们似乎都没有将其代码开源。
由于这些困难,我想提出一系列 StackOverflow 问题,这些问题可以作为收集与传统蒙古应用程序开发相关的一些更困难的编程问题的答案的中心位置。即使您不懂蒙古语,我们也将不胜感激您帮助审查代码、提出评论和问题、给出答案甚至对问题进行投票。
蒙古文ListView需要满足以下要求:
还需要支持蒙古文 TextView支持的所有内容:
下图展示了蒙古文ListView应具备的基本功能:

我的答案如下,但我欢迎其他解决此问题的方法。
iOS:
android listview vertical-text horizontal-scrolling mongolian-vertical-script