2015-02-23 103 views
0

如何刪除綠色LinearLayout中點的頂部和底部邊距?刪除動態Textviews中的頂部和底部邊距Android

我與setMargins試圖0,但它不工作

這是我的Java類和我的XML的

enter image description here

MainActivity.java

public class MainActivity extends Activity { 

private ViewPager viewPager; 
private MyViewPagerAdapter myViewPagerAdapter; 
private ArrayList<Integer> listOfItems; 

private LinearLayout dotsLayout; 
private int dotsCount; 
private TextView[] dots; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    initViews(); 
    setViewPagerItemsWithAdapter(); 
    setUiPageViewController(); 
} 

private void setUiPageViewController() { 
    dotsLayout = (LinearLayout)findViewById(R.id.viewPagerCountDots); 
    dotsCount = myViewPagerAdapter.getCount(); 
    dots = new TextView[dotsCount]; 

    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
    params.gravity = Gravity.CENTER_VERTICAL; 
    params.setMargins(2, 0, 1, 0); 

    for (int i = 0; i < dotsCount; i++) { 
     dots[i] = new TextView(this); 
     dots[i].setText(Html.fromHtml("&#8226;")); 
     dots[i].setTextSize(30); 
     dots[i].setTextColor(getResources().getColor(R.color.blanco)); 
     dots[i].setLayoutParams(params); 
     dotsLayout.addView(dots[i]);    
    } 

    dots[0].setTextColor(getResources().getColor(R.color.negro)); 
} 

private void setViewPagerItemsWithAdapter() { 
    myViewPagerAdapter = new MyViewPagerAdapter(listOfItems); 
    viewPager.setAdapter(myViewPagerAdapter); 
    viewPager.setCurrentItem(0); 
    viewPager.setOnPageChangeListener(viewPagerPageChangeListener); 
} 

// page change listener 
OnPageChangeListener viewPagerPageChangeListener = new OnPageChangeListener() { 

    @Override 
    public void onPageSelected(int position) { 
     for (int i = 0; i < dotsCount; i++) { 
      dots[i].setTextColor(getResources().getColor(R.color.blanco)); 
     } 
     dots[position].setTextColor(getResources().getColor(R.color.negro)); 
    } 

    @Override 
    public void onPageScrolled(int arg0, float arg1, int arg2) { 

    } 

    @Override 
    public void onPageScrollStateChanged(int arg0) { 

    } 
}; 

private void initViews() { 

    viewPager = (ViewPager)findViewById(R.id.viewPager); 

    listOfItems = new ArrayList<Integer>(); 
    listOfItems.add(1); 
    listOfItems.add(2); 
    listOfItems.add(3); 
    listOfItems.add(4); 
    listOfItems.add(5); 
} 

// adapter 
public class MyViewPagerAdapter extends PagerAdapter{ 

    private LayoutInflater layoutInflater; 
    private ArrayList<Integer> items; 

    public MyViewPagerAdapter(ArrayList<Integer> listOfItems) { 
     this.items = listOfItems; 
    } 

    @Override 
    public Object instantiateItem(ViewGroup container, int position) { 

     layoutInflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View view = layoutInflater.inflate(R.layout.view_pager_item, container,false); 

     TextView tView = (TextView)view.findViewById(R.id.PageNumber); 

     tView.setText(listOfItems.get(position).toString()); 

     ((ViewPager) container).addView(view); 

     return view; 
    } 

    @Override 
    public int getCount() { 
     return items.size(); 
    } 

    @Override 
    public boolean isViewFromObject(View view, Object obj) { 
     return view == ((View)obj); 
    } 


    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 
     View view = (View)object; 
     ((ViewPager) container).removeView(view); 
    } 
} 
} 

activity_main .xml

<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.support.v4.view.ViewPager 
    android:id="@+id/viewPager" 
    android:layout_width="match_parent" 
    android:layout_height="100dp" > 
</android.support.v4.view.ViewPager> 

<RelativeLayout 
    android:id="@+id/viewPagerIndicator" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/viewPager" 
    android:background="@color/app_green" > 

    <LinearLayout 
     android:id="@+id/viewPagerCountDots" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:orientation="horizontal" > 
    </LinearLayout> 
</RelativeLayout> 

</RelativeLayout> 

view_pager_item.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/RelativeLayout1" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:background="#FF0000" > 

<TextView 
    android:id="@+id/PageNumber" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:gravity="center" 
    android:textColor="@android:color/white" 
    android:textSize="50sp" /> 

</RelativeLayout> 
+1

設置的LinearLayout – 2015-02-23 10:38:29

+0

的重力@kamran它不是爲我工作 – user4152 2015-02-23 10:41:03

+0

@DerGolem你能請寫你的代碼? – user4152 2015-02-23 11:02:24

回答

0

從我的理解你是如何做事情的問題是因爲你使用完全停止字符作爲你的指標。所以文本視圖有空間容納較大的字符。

我會建議使用白色和黑色圓圈的圖像,讓他們在線性佈局。或者你可以使用一個RadioGroup像下面

<RadioGroup 
android:id="@+id/radioGroup1" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:orientation="horizontal"> 

<RadioButton 
    android:id="@+id/radio0" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:checked="true" 
    android:text="" /> 

<RadioButton 
    android:id="@+id/radio1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="" /> 

<RadioButton 
    android:id="@+id/radio2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="" /> 
</RadioGroup> 

然後設置其中一個顯示爲選擇使用類似

RadioGroup dots = (RadioGroup)findViewById(R.id.radioGroup1); 
int[] dotsIndex = {r.id.radio0, r.id.radio1,r.id.radio2}; 
dots.check(dotsIndex[indexToBeHighlighted]); 
0

不佈局高度和寬度使用WrapContent,機器人重力屬性沒有工作與wrapcontent高度和寬度

使用本

<LinearLayout 
      android:id="@+id/viewPagerCountDots" 
      android:layout_width="match_parent" 
      android:layout_height="20dp" 
      android:gravity="center" 
      android:orientation="horizontal"> 
+0

@DerGolem錯了? – 2015-02-23 10:48:03

+0

@kamran同樣的結果 – user4152 2015-02-23 10:55:34

+1

@DerGolem你是對的 – 2015-02-23 10:57:07

0

你可以試試Dump Your View Hie rarchy從DDMS進行佈局。

可能是Match Parent textview點會幫助,雖然我不知道。

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT); 
    params.gravity = Gravity.CENTER; 

    for (int i = 0; i < dotsCount; i++) { 
     dots[i] = new TextView(this); 
     dots[i].setText(Html.fromHtml("&#8226;")); 
     dots[i].setTextSize(30); 
     dots[i].setTextColor(getResources().getColor(R.color.blanco)); 
     dots[i].setLayoutParams(params); 
     dotsLayout.addView(dots[i]);    
    } 
0

讓你的LinearLayout寬度您使用的LinearLayout爲中心的LinearLayout點必須有充分的寬度上MATCH_PARENT。

0

對不起,我看到你在發佈我的答案後編輯了你的問題。有了這個,你可以有中心的點:改變文字的大小,以較小的值

dots[i].setTextSize(20); 

與您的當前值(30)的點是大,但TextView的公司也更大。他們比他們的父母高,這就是爲什麼他們不看中心

+0

這不能解決我的問題 – user4152 2015-02-23 12:23:42

+0

我的解決方案引用了你的原始問題:帶有LinearLayout中心Gravitiy的圓點 – 2015-02-23 13:16:07