2011-05-12 48 views
0

我想创建我自己的复合视图。该视图将扩展一个LinearLayout,并在其中包含一个Horizo​​ntalScrollView。这个Horizo​​ntalScrollView将保存一个可以容纳几个TextView的父LinearLayout。帮助Compund View和onLayout和onMeasure(Horizo​​ntalScrollView)

我想实现的就像一个字母横向索引。通过上面的方法,它工作得很好。但这还不够。

现在字母A不能位于滚动的中心,因为它是第一个字母,而且不能向左滚动。我想要实现的是用户可以滚动到左侧,直到第一个字母(A)位于中间的点。当滚动到右侧和最后一个字母(Z)时,它的工作方式相同。

我很困惑如何做到这一点。我知道我可以在滚动中为内部LinearLayout设置填充,但我必须等到我知道滚动的宽度(它的大小是动态的,FILL_PARENT)。我可以在onLayout方法中获取这个大小,调用getMeasuredWidth。然后我可以使用所需的值更新内部的LinearLayout填充,但看起来像是尽管我更改了填充,但innerLayout的宽度不会更改。

我也曾尝试在A之前和Z之后添加2个间隔符(正视图),但范例是相同的。当我知道滚动的宽度时,我需要改变它的大小。

请帮忙! :D

我可以发布一些代码,如果需要的话。

编辑与图片: enter image description here

所以我希望能够更多地向左滚动,直到刚刚字母A是在中间。

帮助!谢谢。

+0

难道你不能直接使用图库,而不是你的自定义复合? – OcuS 2011-05-12 09:53:27

+0

我对android很新颖。我尝试使用一个画廊,但我不知道该小部件是如何编辑的。我最终一次显示了一封信(我看不到右侧和左侧的字母)。无论如何,我会试一试。即使它与Gallery合作,我也想知道如何实现这样的事情。我来自iPhone开发,没有布局,但像这样的东西很简单。 – LocoMike 2011-05-12 10:29:22

回答

1

这是我为测试做的。一些截图here,herehere

我认为它很符合你想要完成的。

而对于活动适配器视图(布局)alphabet_item.xml一些代码AlphabetActivity.java

package com.ocus.androidtests.activity; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.ArrayAdapter; 
import android.widget.Gallery; 

import com.ocus.androidtests.R; 

public class AlphabetActivity extends Activity { 

    @Override 
    protected void onCreate(final Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.alphabet); 

     final Gallery gallery = (Gallery) findViewById(R.id.gallery); 
     final String[] strings = new String[] { 
       "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" }; 

     gallery.setAdapter(new ArrayAdapter<String>(this, 
       R.layout.alphabet_item, strings)); 
    } 
} 

代码布局alphabet.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <Gallery 
     android:id="@+id/gallery" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:spacing="20sp" android:unselectedAlpha="1"/> 
</LinearLayout> 

和代码

<?xml version="1.0" encoding="utf-8"?> 
<TextView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textStyle="bold" 
    android:textSize="30sp" /> 
+0

谢谢!这正是我想要的。然而,我仍然对Android中的布局和框模型感到困惑......很多要学习! – LocoMike 2011-05-12 10:52:36

相关问题