2017-03-16 95 views
0

我添加了一個帶有LinearLayout的Horizo​​ntalScrollView,通過編程添加按鈕以顯示類別選擇器。如何在Horizo​​ntalScrollView內的LinearLayout中正確顯示按鈕?

這是結果與API 23,1080×1920 xxhdpi模擬器:

Emulator with API 23 1080x1920 xxhdpi

這是怎麼看在我的Android手機與API 22:

This is how it looks in my Android phone with Api 22:

這是我的xml代碼:

<HorizontalScrollView 
     android:id="@+id/hsvClosetFilter" 
     android:layout_width="match_parent" 
     android:layout_height="50dp" 
     android:layout_below="@+id/rlt" 
     android:layout_marginTop="5dp"> 

     <LinearLayout 
      android:id="@+id/viewCategoryNames" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:orientation="horizontal" /> 

    </HorizontalScrollView> 

而且我編程方式添加按鈕這樣的:

private void buildCategoryScroll() { 
     LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(230, 80); 
     layoutParams.setMargins(0, 10, 30, 10); 

     for (int i=0; i<categoryNames.size(); i++) { 
      final Button btCategory = new Button(getActivity()); 
      btCategory.setText(categoryNames.get(i)); 
      btCategory.setTextSize(16f); 
      btCategory.setAllCaps(false); 
      btCategory.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.colorPrimary)); 
      btCategory.setTextColor(ContextCompat.getColor(getActivity(), R.color.white)); 
      btCategory.setLayoutParams(layoutParams); 
      btCategory.setTag(i); 
      viewCategoryNames.addView(btCategory); 
    } 
} 

回答

1

MainActivity:

public class MainActivity extends AppCompatActivity { 

    LinearLayout viewCategoryNames; 

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


     viewCategoryNames = (LinearLayout) findViewById(R.id.viewCategoryNames); 
     buildCategoryScroll(); 

    } 

    private void buildCategoryScroll() { 
     LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
     layoutParams.setMargins(0, 10, 30, 10); 

     for (int i = 1; i <= 15; i++) { 
      final Button btCategory = new Button(MainActivity.this); 
      btCategory.setText(String.valueOf(i)); 
      btCategory.setTextSize(16f); 
      btCategory.setAllCaps(false); 
      btCategory.setBackgroundColor(ContextCompat.getColor(this, R.color.colorAccent)); 
      btCategory.setTextColor(ContextCompat.getColor(this, android.R.color.black)); 
      btCategory.setLayoutParams(layoutParams); 
      btCategory.setTag(i); 
      viewCategoryNames.addView(btCategory); 
     } 
    } 
} 

activity_main.xml中:

<?xml version="1.0" encoding="utf-8"?> 
<HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/hsvClosetFilter" 
    android:layout_width="match_parent" 
    android:layout_height="50dp" 
    android:layout_below="@+id/rlt" 
    android:layout_marginTop="5dp" 
    tools:context="com.example.rohantaneja.horizontalscrollview.MainActivity"> 

    <LinearLayout 
     android:id="@+id/viewCategoryNames" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:orientation="horizontal" /> 

</HorizontalScrollView> 

Output

+0

謝謝!這個工作在模擬器和我的Android上! –

0

試試這個

第1步:

<LinearLayout android:id="@+id/viewCategoryNames" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" /> 

第2步:

private void buildCategoryScroll() { 
for (int i=0; i<categoryNames.size(); i++) { 
final Button btCategory = new Button(getActivity()); 
btCategory.setText(categoryNames.get(i)); 
btCategory.setTextSize(16f); 
btCategory.setAllCaps(false); 
btCategory.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.colorPrimary)); 
btCategory.setTextColor(ContextCompat.getColor(getActivity(), R.color.white)); 
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(230, 80); 
layoutParams.setMargins(0, 10, 30, 10); 
btCategory.setLayoutParams(layoutParams); 
btCategory.setTag(i); 
viewCategoryNames.addView(btCategory); 
} 
} 
+0

感謝您的回答,但沒有奏效。我得到了相同的結果模擬器 –

相關問題